[C++] Zamiana systemów

nowyyyy4
Użytkownik
Użytkownik
Posty: 245
Rejestracja: 9 paź 2012, o 22:52
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 16 razy
Pomógł: 1 raz

[C++] Zamiana systemów

Post autor: nowyyyy4 »

Znalazłem taki program do przeliczania systemów

Kod: Zaznacz cały

//z dowolnego na dziesietny
void na10c()
{
	char liczba[100];
	int p = 1, wynik = 0, system, x;
	cout << "Podaj system w jakim zapisana jest liczba <2,16>: ";
	cin >> system;
	cout << "Podaj liczbe: ";
	cin >> liczba;	
	for (int i = strlen(liczba)-1; i >= 0; i--)
	{
		if (liczba[i] >= '0' && liczba[i] <= '9')
		{
			x = liczba[i]-'0';
		}			
		else
		{
			x = liczba[i] - 55;
		}			
		wynik += x*p;
		p *= system;
	}
	cout << "Twoj wynik to: " << wynik << endl;	
}
//z dziesietnego na inny

int z10c(int liczba, int system)
{
	if (liczba == 0)
	{	
		return liczba;
	}
	int wynik = liczba%system;
	liczba /= system;
	z10c(liczba, system);
	if (wynik < 10)
	{
		cout << wynik;
	}	
	else
	{
		char litera = wynik + 55;
		cout << litera;
	}
}
//z dowolnego na dowolny

void dowolny()
{
	char liczba[100];
	int p = 1, wynikposredni = 0, system, system2, x;
	cout << "Podaj system w jakim zapisana jest liczba <2,16>: ";
	cin >> system;
	cout << "Podaj liczbe: ";
	cin >> liczba;	
	for (int i = strlen(liczba)-1; i >= 0; i--)
	{
		if (liczba[i] >= '0' && liczba[i] <= '9')
		{
			x = liczba[i]-'0';
		}			
		else
		{
			x = liczba[i] - 55;
		}			
		wynikposredni += x*p;
		p *= system;
	}
	cout << "Na jaki system zamienic liczbe <2,16>: ";
	cin >> system2;
	cout << "Twoj wynik to: ";
	z10c(wynikposredni, system2);
}


int main()
{
	int a,b;
	int operacja;
	cout << "Wybierz operacje, ktora chcesz wykonac: ";
	cout << "\n 1. Zamiana liczby z systemu dziesietnego na inny.";
	cout << "\n 2. Zamiana liczby z dowolnego systemu liczbowego na dziesietny.";
	cout << "\n 3. Zamiana liczby z dowolnego systemu liczbowego na inny dowolny." << endl;
	operacja=getch();		
	
	switch(operacja)
	{
		case '1':			
			cout << "Podaj liczbe w systemie dziesietnym: ";
			cin >> a;
			cout << "Na jaki system zamienic liczbe <2,16>: ";
			cin >> b;
			cout << "Twoj wynik to: ";
			z10c(a, b);
			break;
		case '2':			
			na10c();			
			break;
		case '3':
			dowolny();			
			break;
	}
	while(!kbhit());
	return 0;
}
Jestem początkujący z programowania i nie wiem o co w niektórych miejscach chodzi.
1)

Kod: Zaznacz cały

if (liczba[i] >= '0' && liczba[i] <= '9')
Dlaczego te cyfry sa w apostrofie? Dlatego, że podajemy nie liczbę a tablice i program traktuje to jak literki?
2)

Kod: Zaznacz cały

x = liczba[i] - 55;
dlaczego odejmujemy albo dodajemy 55?
3)

Kod: Zaznacz cały

		wynik += x*p;
		p *= system;
Co oznaczają te symbole?
Proszę o pomoc.
Ostatnio zmieniony 2 lis 2014, o 12:14 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
mCichy13
Użytkownik
Użytkownik
Posty: 76
Rejestracja: 15 cze 2013, o 02:20
Płeć: Mężczyzna
Lokalizacja: Tutaj
Podziękował: 26 razy
Pomógł: 5 razy

[C++] Zamiana systemów

Post autor: mCichy13 »

1) tablica jest zdefiniowana jako char więc jest to tablica znakowa a skoro tak musimy jej zawartość porównywać ze znakami np '0' , 'A', 'L', '1'

3) wynik+= to jest to samo co wynik=wynik+. Mnożenie analogicznie
nowyyyy4
Użytkownik
Użytkownik
Posty: 245
Rejestracja: 9 paź 2012, o 22:52
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 16 razy
Pomógł: 1 raz

[C++] Zamiana systemów

Post autor: nowyyyy4 »

A co oznacza wynik=wynik+ ??
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C++] Zamiana systemów

Post autor: kalwi »

koledze chodziło o

Kod: Zaznacz cały

wynik += x;
jest równoważne z

Kod: Zaznacz cały

wynik=wynik+x;
Ostatnio zmieniony 2 lis 2014, o 12:15 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
ODPOWIEDZ