Zamiana liczby dziesiętnej na binarny i grupowanie

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<<' ';
}

0

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

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;
}
 
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

0

Dzieki :)

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;
}
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.

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