Wypisanie danej od tyłu w programie do zamiany z systemu dziesiętnego na dowolny
Ostatnio zmodyfikowano 2017-06-12 20:51
sebek265 Temat założony przez niniejszego użytkownika |
Wypisanie danej od tyłu w programie do zamiany z systemu dziesiętnego na dowolny » 2017-06-10 10:33:08 Witam.Chciałbym zrobić program zamieniający z systemu dziesiętnego na dowolny, jednak niezbyt rozumiem jak mogę zapisać daną wypisaną przez komputer. #include <iostream>
using namespace std;
int main() { int liczba, system; cout << "Podaj liczbe:" << endl; cin >> liczba; cout << "Podaj system:" << endl; cin >> system; cout << "Wynik:"; if( liczba == 0 ) { cout << "0"; } else { int wynik, reszta; while( liczba != 0 ) { reszta = liczba % system; liczba = liczba / system; cout << reszta; } } }
Chciałbym aby reszta była zapisana od tyłu. |
|
maly7 |
» 2017-06-10 12:00:36 Możesz użyć stringa i wstawiać liczbę na jego początku. Dopiero na końcu go wypisać. |
|
sebek265 Temat założony przez niniejszego użytkownika |
» 2017-06-12 15:30:47 Mógłbym jakąś większą podpowiedź? Co powinienem zamienić na stringa albo gdzie go dodać, bo na razie nic mi to nie mówi.
|
|
mateczek |
» 2017-06-12 16:12:44 #include <iostream> using namespace std; int main() { int liczba = 9, system = 2; string str_liczba = ""; while( liczba ) { str_liczba.insert( str_liczba.begin(), liczba % system + '0' ); liczba = liczba / system; } cout << str_liczba << endl; } |
|
sebek265 Temat założony przez niniejszego użytkownika |
» 2017-06-12 17:16:39 #include <iostream> using namespace std; int main() { int liczba, system; string sliczba = ""; cout << "Podaj liczbe:" << endl; cin >> liczba; cout << "Podaj system:" << endl; cin >> system; while( liczba != 0 ) { if( liczba % system <= 9 ) { sliczba.insert( sliczba.begin(), liczba % system + '0' ); liczba = liczba / system; } else { sliczba.insert( sliczba.begin(), liczba % system + 7 + '0' ); liczba = liczba / system; } } cout << sliczba << endl; }
Tak wygląda mój skończony program, jest w nim coś jeszcze do poprawy? Póki co jak testowałem to wszystko wychodzi książkowo. Naprawdę dziękuje za pomoc :). |
|
mokrowski |
» 2017-06-12 20:51:38 Coś można poprawić.. #include <iostream> #include <limits> #include <string>
using namespace std;
auto readUnsigned( const std::string & message ) { unsigned data; for(;; ) { std::cout << message; if( std::cin >> data ) break; std::cerr << "Wprowadziłeś nieprawidłową liczbę." "Spróbuj jeszcze raz.\n"; std::cin.clear(); std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' ); } return data; }
auto calculateValue( unsigned value, unsigned base ) { std::string data; unsigned mod; while( value ) { mod = value % base; data.insert( data.begin(), mod +( mod <= 9 ? '0' : 7 + '0' ) ); value /= base; } return data; }
int main() { auto value = readUnsigned( "Podaj liczbę: " ); auto base = readUnsigned( "Podaj system: " ); std::string data; data = calculateValue( value, base ); std::cout << data << std::endl; }
|
|
« 1 » |