Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

System 10 na 16

Ostatnio zmodyfikowano 2012-06-19 14:57
Autor Wiadomość
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? :\

C/C++
#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;
}
P-58589
xevuel
» 2012-06-17 11:21:28
C/C++
if( t[ i ] == 11 )
{
    t[ i ] == 'B';
}
Hmm... » Kurs C++ » Poziom 1Operacje porównania lekcja

C/C++
t[ i ] = x % 16;
//...
i++;
//...
if( t[ i ] == /*...*/ )
Za wcześnie inkrementujesz zmienną i.

@down: Można, można. Wystarczy użyć rzutowania w stylu
C/C++
std::cout <<( char ) 67 << std::endl;
aby wypisać liczbę jako znak.
P-58590
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
P-58591
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?

C/C++
#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;
}
P-58599
OSA_PL
» 2012-06-17 14:22:51
C/C++
t[ i ] == wynik[ i ];
wynik[ i ] == 'A'; //== to operator porównania
P-58600
kampar
» 2012-06-17 14:25:55
C/C++
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?
P-58601
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
P-58606
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.

C/C++
#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;
}
P-58644
« 1 » 2
  Strona 1 z 2 Następna strona