Ocena użytkownikóww: ***** / 43
Nadesłany przez Marian, 24 lutego 2011 20:50
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
systemy_1_c.cpp:
//zamiana z systemu dziesietnego
//www.algorytm.org
#include<iostream>
using namespace std;
void konwersja(int liczba, int system)
{
if (liczba == 0) // jezeli liczba wynosi 0 to konczymy - mamy juz wynik
return;
int wynik = liczba%system; // obliczamy kolejna liczbe/litere do wyswietlenia
liczba /= system; // zmniejszamy liczbe
konwersja(liczba, system); // wywolujemy funkcje rekurencyjnie aby wyswietlac 'od konca'
if (wynik < 10) // jezeli wynik mniejszy od 10 to wyswietlamy go
cout << wynik;
else // jezeli wiekszy to zamieniamy na odpowiedni kod ASCII
{
char litera = wynik + 55;
cout << litera;
}
}
int main()
{
int liczba, system;
cout << "Podaj liczbe w systemie dziesietnym: ";
cin >> liczba;
cout << "Na jaki system zamienic liczbe <2,16>: ";
cin >> system;
cout << liczba << " po konwersji na system " << system << "-kowy wynosi ";
konwersja(liczba, system); // wywolanie funkcji konwertujacej
cout << endl;
return 0;
}
można do char przypisać liczbę ?
Czyli kolejne cyfry w systemie szesnastkowym to: 0, 1, 2, 3, 4, 5, 7, 8, 9, 0, A, B, C, D, E, F.
Jeżeli kolejna cyfra wyniku jest z zakresu 0-9 to wypisywana jest ta cyfra, a jeżeli jest to 10, 11, ... to wypisywany jest znak ASCII 55 + ta cyfra. Co dla:
10 daje: 55 + 10 = 65 => a to jest kod litery 'A'
11 daje: 55 + 11 = 66 => a to jest kod litery 'B'
12 daje: 55 + 12 = 67 => a to jest kod litery 'C'
...
zmienna=strtol(zmienna2 c.str(), NULL, 2);