Zamiana liczby dziesiętnej na binarny i grupowanie

2011-07-26 12:23

Rejestracja: 8 lat temu

Ostatnio: 8 lat temu

0

Witam, mam mały problem z napisaniem programu, który byłby w stanie pogrupować liczbę w postaci binarnej w czwórki.
Zależy mi aby dajmy na to liczba 1100110 była pogrupowana w ten sposób: 110 0110, natomiast w moim programie ta liczba wygląda tak 1100 110.
Oto kod:

#include<iostream>
using namespace std;
    int j;
int zamien(int liczba);

int main()
{
    int dziesietna;

    cout << "Podaj liczbe dziesietna do zamiany na dwojkowa: ";
    cin >> dziesietna;

    cout << "A oto wynik: ";
    zamien(dziesietna);

}

int zamien(int liczba)
{
    int reszta = liczba%2;

    if(liczba>1)
    {
                   zamien(liczba/2);

    }
    j++;

    cout << reszta;if(j%4==0)cout<<' ';
}
edytowany 1x, ostatnio: madmike, 2011-07-26 20:42

Pozostało 580 znaków

2011-07-26 12:42

Rejestracja: 12 lat temu

Ostatnio: 7 minut temu

0

Zmienna globalna j, która na dodatek nie ma ustalonej wartości? Nie dziwne, że ci to nie działa. Kombinuj dalej :).


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

Pozostało 580 znaków

kkmkmk
2011-07-26 12:44
kkmkmk
1
#include<iostream>

int zamien(int liczba);

int main()
{
    int dziesietna;

    std::cout << "Podaj liczbe dziesietna do zamiany na dwojkowa: ";
    std::cin >> dziesietna;

    std::cout << "A oto wynik: ";
    zamien(dziesietna);
    std::cout<<"\n" ;

}

int zamien(int liczba)
{
    int reszta = liczba%2;

    static int j=0 ;

    if(liczba>1)
    {
        j++ ;
        zamien(liczba/2);

    }
    if((j%4==3)&&(j))
    {
        std::cout<<' ';
    }
    j--;

    std::cout << reszta;
}

Pozostało 580 znaków

:]
2011-07-26 12:52
:]
0
MarekR22 napisał(a)

Zmienna globalna j, która na dodatek nie ma ustalonej wartości? Nie dziwne, że ci to nie działa. Kombinuj dalej :).

w c++ zmienne globalne oraz tablice są domyślnie zerowane.

tablice globalne oczywiscie ;p

no to użyj tej funkcji "zamien" więcej niż raz. - MarekR22 2011-07-26 13:33

Pozostało 580 znaków

2011-07-26 12:53

Rejestracja: 8 lat temu

Ostatnio: 8 lat temu

0

Dzieki :)

Pozostało 580 znaków

2011-07-26 13:47

Rejestracja: 12 lat temu

Ostatnio: 7 minut temu

0
string bin(unsigned int x, bool leadingZeros = false)
{
    if (x==0)
        return "0";

    string result;
    int i=sizeof(x)*8-1;
    if (!leadingZeros)
        while(x&(1<<i)==0)
            --i;
    for(; i>=0; --i) {
         result += x&(1<<i)==0?"0":"1";
         if (i&15==0 && i)
              result += " ";
    }

    return result;
}

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22, 2011-07-26 13:50

Pozostało 580 znaków

:]
2011-07-26 14:17
:]
0

"no to użyj tej funkcji "zamien" więcej niż raz. - MarekR22 "
Rozumiem, że gdy użyje drugi raz funkcji to zmienna globalna nie będzie już wyzerowana ale co ma piernik do wiatraka skoro on w swoim przykładzie nie wywołuje funkcji wiele razy (poza rekurencją gdzie takie działanie jest pożądane). Gdyby wywoływał wiele razy i mu nie działało (co zapewne by się stało) wtedy twoja odpowiedź mogła by pasować do jego problemu.

dziś używa tej funkcji raz, a jutro nie wiadomo (może zrobi pętle by wprowadzić wiele danych). Życzę udanej kariery z takim podejściem do programowania. - MarekR22 2011-07-26 14:42

Pozostało 580 znaków

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0