algorytm.org

Implementacja w C/C++



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Zamiana z i na system dziesiętny - Implementacja w C/C++
Ocena użytkownikóww: *****  / 43
SłabyŚwietny
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;
}
Komentarze
photo
+2 # Damian12345 2015-08-19 18:22
char litera = wynik + 55;

można do char przypisać liczbę ?
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
+2 # Andy 2016-02-02 13:07
o to chodzi że w kodzie asci dodaje 55 i otrzymije litere
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
+4 # admin 2017-04-13 14:23
Dokładnie to chodzi o to, że dla systemów większych niż dziesiętny kolejne 'cyfry' to A, B, C, D, E, ...
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'
...
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-3 # Wiktoś 2017-12-06 18:59
Czy jest możliwość zrobienia zamiany z dziesiętnego na binarny za pomocą takiego fragmentu kodu?

zmienna=strtol(zmienna2 c.str(), NULL, 2);
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-4 # I-180 2017-12-15 12:08
Kodzik ładny ale nie będzie działać z liczbami ujemnymi
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz