System 10 na 16
Ostatnio zmodyfikowano 2012-06-19 14:57
Kameleon Temat założony przez niniejszego użytkownika |
System 10 na 16 » 2012-06-17 10:46:49 Witam oto mój cudowny program, który niestety nie działa :| . Problem polega na tym, że zamiast pisać, że liczba 11 to B to pisze, że to liczba 11 . Gdzie popełniłem błąd? :\ #include <iostream> #include <cstdio> #include <iomanip> using namespace std;
void zamiana_na_postac_16( int x ) { int t[ 20 ], i = 0; do { t[ i ] = x % 16; x = x / 16; i++; if( t[ i ] == 10 ) { t[ i ] == 'A'; } if( t[ i ] == 11 ) { t[ i ] == 'B'; } if( t[ i ] == 12 ) { t[ i ] == 'C'; } if( t[ i ] == 13 ) { t[ i ] == 'D'; } if( t[ i ] == 14 ) { t[ i ] == 'E'; } if( t[ i ] == 15 ) { t[ i ] == 'F'; } } while( x != 0 ); while( i > 0 ) { i--; cout << t[ i ] << " "; } }
int main() { int x; cin >> x; zamiana_na_postac_16( x ); cin.ignore(); getchar(); return 0; }
|
|
xevuel |
» 2012-06-17 11:21:28 if( t[ i ] == 11 ) { t[ i ] == 'B'; } Hmm... Operacje porównaniat[ i ] = x % 16;
i++;
if( t[ i ] == )
Za wcześnie inkrementujesz zmienną i. @down: Można, można. Wystarczy użyć rzutowania w stylu std::cout <<( char ) 67 << std::endl;
aby wypisać liczbę jako znak. |
|
kampar |
» 2012-06-17 11:28:25 Przecież tablica t[] może przechowywać dane typu int, więc jak chcesz wstawić do niej znaki char. Musisz utworzyć druga tablice, która będzie przechowywała wynik (char wynik[20])
@up owszem można rzutować, ale on tego nie robi. Mój sposób jest łatwiejszy do zrozumienia |
|
Kameleon Temat założony przez niniejszego użytkownika |
» 2012-06-17 14:19:49 Zrobiłem o co prosiliście jednak nie wyświetla mi A,B itp. tylko " ... W czym problem? #include <iostream> #include <cstdio> #include <iomanip> using namespace std;
void zamiana_na_postac_16( int x ) { int t[ 20 ]; char wynik[ 20 ]; int i = 0; do { t[ i ] = x % 16; x = x / 16; if( t[ i ] == 10 ) { t[ i ] == wynik[ i ]; wynik[ i ] == 'A'; } if( t[ i ] == 11 ) { t[ i ] == wynik[ i ]; wynik[ i ] == 'B'; } if( t[ i ] == 12 ) { t[ i ] == wynik[ i ]; wynik[ i ] == 'C'; } if( t[ i ] == 13 ) { t[ i ] == wynik[ i ]; wynik[ i ] == 'D'; } if( t[ i ] == 14 ) { t[ i ] == wynik[ i ]; wynik[ i ] == 'E'; } if( t[ i ] == 15 ) { t[ i ] == wynik[ i ]; wynik[ i ] == 'F'; } i++; } while( x != 0 ); while( i > 0 ) { i--; if( t[ i ] < 10 ) cout << t[ i ] << " "; if( wynik[ i ] >= 10 ) cout << wynik[ i ] << " "; } }
int main() { int x; cin >> x; zamiana_na_postac_16( x ); cin.ignore(); getchar(); return 0; }
|
|
OSA_PL |
» 2012-06-17 14:22:51 t[ i ] == wynik[ i ]; wynik[ i ] == 'A';
|
|
kampar |
» 2012-06-17 14:25:55 t[ i ] == wynik[ i ]; wynik[ i ] == 'A';
Co to ma niby zrobić? Polecam wrócić do kursu, bo nie rozumiesz co piszesz. Dlaczego używasz operatora porównania zamiast operatora przypisania? I dlaczego do tablicy t chcesz przypisać pustą tablicę char? |
|
Kameleon Temat założony przez niniejszego użytkownika |
» 2012-06-17 15:22:27 Ah przepraszam, cały czas się mylę na tych operatorach ... Po ich zmianie działa prawie poprawnie, bo po wpisaniu 1500 wyskakuje mi : 5 " -2 D -28 C Prawie dobrze.... :P |
|
Kameleon Temat założony przez niniejszego użytkownika |
» 2012-06-18 17:38:18 Coś nie chcę mi dobrze wyjść, czy ktoś ma jakiś pomysł na ten program? Proszę o podpowiedzi. #include <iostream> #include <cstdio> #include <iomanip> using namespace std;
void zamiana_na_postac_16( int x ) { int t[ 20 ]; char wynik[ 20 ]; int i = 0; do { t[ i ] = x % 16; x = x / 16; if( t[ i ] == 10 ) { t[ i ] = wynik[ i ]; wynik[ i ] = 'A'; } if( t[ i ] == 11 ) { t[ i ] = wynik[ i ]; wynik[ i ] = 'B'; } if( t[ i ] == 12 ) { t[ i ] = wynik[ i ]; wynik[ i ] = 'C'; } if( t[ i ] == 13 ) { t[ i ] = wynik[ i ]; wynik[ i ] = 'D'; } if( t[ i ] == 14 ) { t[ i ] = wynik[ i ]; wynik[ i ] = 'E'; } if( t[ i ] == 15 ) { t[ i ] = wynik[ i ]; wynik[ i ] = 'F'; } i++; } while( x != 0 ); while( i > 0 ) { i--; if( t[ i ] < 10 ) cout << t[ i ] << " "; if( wynik[ i ] >= 10 ) cout << wynik[ i ] << " "; } }
int main() { int x; cin >> x; zamiana_na_postac_16( x ); cin.ignore(); getchar(); return 0; }
|
|
« 1 » 2 |