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

binarny na dziesietny tablica znakowa

Ostatnio zmodyfikowano 2014-11-22 15:52
Autor Wiadomość
bolones
Temat założony przez niniejszego użytkownika
binarny na dziesietny tablica znakowa
» 2014-11-22 13:54:00
Witajcie!
Mam napisac funkcje która będzie zamieniać liczbe w systemie binarnym na dziesiętny, przy pomocy tablicy znakowej. Napisałem tylko tyle:
C/C++
void bin2dec()

{
    char tab[ 300 ];
    int n;
    cout << wprowadz liczbe w systemie binarnym << endl;
    cin >> tab;
   
}

i w sumie to nie mam pomyslu co zrobic dalej, jakieś sugestie ?:)
P-121150
NopeDotAvi
» 2014-11-22 14:23:43
po co Ci tablica charow? Użyj stringa.
To jest moja iplementacja
C/C++
void binToDec()
{
    int result = 0;
    int podstawa = 2; //podstawa binarki
    int potega = 0;
    int pomocnicza = 0;
    string liczbaBinarna; //liczba binarna
    cout << "Wprowadz liczbe binarna ";
    cin >> liczbaBinarna;
    for( int i = liczbaBinarna.size() - 1; i >= 0; --i )
    {
        pomocnicza =( liczbaBinarna[ i ] - 48 == 0 ) ? 0
            : 1;
        cout << "Pomocnicza: " << pomocnicza << " Potega: " << potega << endl; //dla pomocy, mozna usunac
        if( pomocnicza != 0 )
             result +=( pow( podstawa, potega ) );
       
        potega += 1;
    }
    cout << result << endl;
}
jak coś nie wiesz to poytaj, sprawdziłem i wygląda na to że działa.
P-121156
MrThoruss
bin 2 dec
» 2014-11-22 14:26:50
Witam , ja też aktualnie nad tym pracuję i udało mi się stworzyć coś takiego
C/C++
void bintodec()
{
   
   
    string binarny;
    cout << "Podaj liczbe w systemie binarnym: ";
    cin >> binarny;
    int binaryl = binarny.length();
    int wynik = 0;
   
    for( int i = 0; binaryl >= 0; i++ )
    {
        binaryl--;
        if( binarny[ binaryl ] == '1' )
        {
            wynik = wynik + pow( 2, i );
        }
       
       
        else if( !( binarny[ binaryl ] == '1' || '0' ) ) // nie działa
        {
            cout << "Wpisana wartosc nie zostala podana w postaci binarnej" << endl;
            break;
           
        }
       
       
    }
   
    cout << "Liczba " << binarny << " w systemie dziesietnym to: " << wynik << endl;
}
program przelicza liczby w systemie binarnym na liczby w systemie dziesiętny, tylko nie wiem czemu nie sprawdza, czy podana liczba posiada poprawny
zapis 0-1 , nie chciałem tworzyć nowego tematu dlatego pytam o to tu.   
P-121158
NopeDotAvi
» 2014-11-22 14:35:45
bo masz zły warunek do sprawdzania czy jest poprawna.
P-121160
MrThoruss
» 2014-11-22 14:37:55
A mógłbyś pokazać jak taki warunek powinien wyglądać ?
P-121161
NopeDotAvi
» 2014-11-22 14:44:39
poszukaj lekcji o nazwie "operacje logiczne" wyciągnij z niej ile się da
P-121163
MrThoruss
» 2014-11-22 15:52:26
Coś wykombinowałem i teraz sprawdzanie czy liczba jest w systemie binarnym działa poprawnie
oto kod:
C/C++
string binarny;
cout << "Podaj liczbe w systemie binarnym: ";
cin >> binarny;
int binaryl = binarny.length();
int wynik = 0;


for( int i = 0; binaryl >= 0; i++ )
{
    binaryl--;
   
    if( binarny[ binaryl ] == '1' )
    {
        wynik = wynik + pow( 2, i );
    }
   
    if( binaryl >= 0 )
    {
       
        if( binarny[ binaryl ] != '1' && binarny[ binaryl ] != '0' )
        {
           
            cout << "Wpisana wartosc nie zostala podana w postaci binarnej" << endl;
            break;
            return 0;
           
        }
       
    }
   
   
}

cout << "Liczba " << binarny << " w systemie dziesietnym to: " << wynik << endl;

}


P-121169
« 1 »
  Strona 1 z 1