Pozycyjne systemy liczbowe. Przeliczanie liczby BIN, OCT, HEX na DEC

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.