Nieprawidłowa konwersja liczby całkowitej z systemu dziesiętnego na szesnastkowy
Ostatnio zmodyfikowano 2018-09-17 16:13
HamesJetfield Temat założony przez niniejszego użytkownika |
Nieprawidłowa konwersja liczby całkowitej z systemu dziesiętnego na szesnastkowy » 2018-09-17 15:21:34 Witam, chcę zrobić funkcję void, która dla podanej zmiennej całkowitej w systemie dziesiętnym wypisze na ekran jej odpowiednik w systemie szesnastkowym. Niestety, po uruchomieniu funkcja nie wypisuje nic na ekran. W czym może tkwić problem? Z góry przepraszam, jeżeli coś źle zrobiłem przy zakładaniu tematu i dziękuję za pomoc! #include <iostream>
using namespace std;
void printint( int x ) { int pom = 0, pom2, mod, z; z = x; do { z = z / 16; pom++; } while( z >= 16 ); pom2 = pom; string liczba; for( int i = 0; i < pom2; i++ ) { mod = x % 16; if( mod >= 0 && mod <= 9 ) { liczba[ pom - 1 ] = mod; } else { switch( mod ) { case 10: liczba[ pom - 1 ] = 65; break; case 11: liczba[ pom - 1 ] = 66; break; case 12: liczba[ pom - 1 ] = 67; break; case 13: liczba[ pom - 1 ] = 68; break; case 14: liczba[ pom - 1 ] = 69; break; case 15: liczba[ pom - 1 ] = 70; break; } } x = x / 16; pom--; } cout << liczba; } int main() { printint( 1 ); return 0; }
|
|
mateczek |
» 2018-09-17 15:57:44 nie możesz się odwoływać do za pomocą operatora[] do stringa który nie ma zarezerwowanej pamięci. i ma rozmiar zerowy #include <iostream> #include<string> using namespace std;
void printint( int x ) { string wynik_hex; while( x ) { int kod = x % 16; x /= 16; if( kod >= 10 ) wynik_hex.insert( wynik_hex.begin(), kod - 10 + 'a' ); else wynik_hex.insert( wynik_hex.begin(), kod + '0' ); } cout << wynik_hex << endl; } int main() { printint( 255 ); return 0; } co do twojego kodu to string liczba; liczba.resize( pom );
liczba[ pom - 1 ] = mod + '0';
do { z = z / 16; pom++; } while( z );
|
|
HamesJetfield Temat założony przez niniejszego użytkownika |
» 2018-09-17 16:13:29 Dziękuję bardzo za przejrzystą odpowiedź! :) |
|
« 1 » |