Zamiana liczby dziesiętnej na binarny i grupowanie

Odpowiedz Nowy wątek
2011-07-26 12:23
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
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

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
0

Dzieki :)

Pozostało 580 znaków

2011-07-26 13:47
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

Odpowiedz
Liczba odpowiedzi na stronę

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