Pozycyjne systemy liczbowe. Przeliczanie liczby BIN, OCT, HEX na DEC
Zanim zaczniesz kodować ...
Aby napisać progam na przeliczanie liczby zapisanej systemie pozycyjnym o podanej podstawie na system DZIESIĘTNY musisz najpierw zrozumieć algorytm, czyli sposób postępowania. Pomoże Ci w tym artykuł:
przeliczanie liczb między pozycyjnymi systemami liczbowymi
Koduj samodzielnie, ale film może Ci pomóc ...
Przykładowy kod programu z powyższego filmu:
#include <iostream> #include <cmath> using namespace std; // funkcja zamieniająca zmienną liczba (podaną jaki string) zapisaną w systemie o podanej podstawie // na liczbę w systemie dziesiętnym int p2dec(string liczba, int podstawa){ int wynik=0, // na początku wynik jest 0 i, cyfra; int d=liczba.length(); // ilość cyfr liczby for(i=0; i<d; i++){ cyfra=liczba[d-1-i]-48; // pow(podstawa, wykładnik) - funkcja potęgująca z biblioteki <cmath> if(cyfra<=9) wynik=wynik+cyfra*pow(podstawa,i); else wynik=wynik+(cyfra-7)*pow(podstawa,i); } return wynik; } int main() { //cout << p2dec("110101", 2) << endl; //cout << p2dec("1563", 8) << endl; //cout << p2dec("AAF", 16) << endl; //cout << p2dec("345", 10) << endl; string liczbaP; int podstawaSyst; cout << "podaj podstawe systemu: "; cin >> podstawaSyst; cout << "podaj liczbe w systemie o podstawie " << podstawaSyst << " : "; cin >> liczbaP; cout << "w systemie DECYMALNYM to jest: " << p2dec(liczbaP, podstawaSyst); return 0; }
Uwaga:
- Powyższy kod będzie przeliczał liczby co najwyżej w systemie HEX (szesnastkowym).
- Jeśli w liczbie do przeliczenia użyjesz cyfr większych od 9 (czyli: A, B, C, D, E, F), to pisz je DUŻĄ lietrą. Tylko w tym przypadku uzyskasz poprawny wynik.
Użycie kodu:
- Powyższy kod można wykorzystać w środowisku Dev C++ lub innym. Wystarczy utworzyć nowy projekt i wkleić ten kod zamiast istniejącego.
- Można też użyć kodu na jednej ze stron WWW z kompilatorami on-line, na przykład na stronie: www.cpp.sh
ZADANIA:
Zadanie 1
Napisz program, który przeliczy podaną liczbę z systemu dwójkowego (BIN) na system dziesiętny (DEC). Zadanie zrealizuj za pomocą funkcji zwracającej wartość typu double z jednym argumentem liczba typu string. Liczbę do przeliczenia wczytaj w programie głównym z klawiatury.
Zadanie 2
Napisz program, który przeliczy podaną liczbę z systemu szesnastkowego (HEX) na system dziesiętny (DEC). Zadanie zrealizuj bez użycia funkcji. Liczbę do przeliczenia wczytaj w programie głównym z klawiatury.