zamiana liczby na binarna

Odpowiedz Nowy wątek
2018-02-05 19:50

Rejestracja: 2 lata temu

Ostatnio: 1 miesiąc temu

0

chciałbym aby program wczytał liczbę, wypisał ją wspak w sposób rekurencyjny a następnie by wypisał tą liczbę binarnie. Stworzyłem cos takiego ale wypisanie jej w sposob binarny mi nie idzie, prosze bardzo o pomoc.

#include<iostream>
#include<cstdlib>
using namespace std;

void rekurencja(int* tab,int indeks)
{
    cout<<tab[indeks]<<" ";
    if(indeks>0)rekurencja(tab,indeks-1);
}
void zamiana(int n)
{
    int i=0,tab[31];
    int licznik=0;
    while(n!=0)
    {
        tab[i++]=n%2;
        n/=2;
    }
    for(int j=i-1;j>=0;j--)
       {
           cout<<tab[j];
       }
}
int main()
{
    int n;
    cin>>n;
    int *tab = new int[n];
    for(int i=0;i<n;i++)
    {
        cin>>tab[i];

    }
  rekurencja(tab,n-1);
   cout<<endl;
  zamiana(n);

        return 0;
}

Pozostało 580 znaków

2018-02-05 20:45

Rejestracja: 3 lata temu

Ostatnio: 1 godzina temu

0

Do funkcji zamiana() przekazujesz n czyli jak mniemam ilość liczb a nie liczby podane przez użytkownika.

Pozostało 580 znaków

2018-02-05 20:46

Rejestracja: 2 lata temu

Ostatnio: 1 miesiąc temu

0

własnie nie wiem co wpisac aby zamienialo mi liczbę podana przez uzytkownika ..

Pozostało 580 znaków

2018-02-05 20:53

Rejestracja: 3 lata temu

Ostatnio: 1 godzina temu

0

Już chyba widzę o co w Twoim kodzie biega.
Musiałbyś zamienić cyfry z tablicy tab na jedną zmienną int którą to przekażesz funkcji zamiana.
Ewentualnie przerób swój program tak aby wczytał liczbę za jednym razem a nie cyfra po cyfrze.

Pozostało 580 znaków

2018-02-05 21:06

Rejestracja: 3 lata temu

Ostatnio: 5 minut temu

0

Nie wiem o co chodzi, ale funkcja zamiana drukuje to co powina, czyli swój parametr wejścoiwy (n) binarnie.


edytowany 1x, ostatnio: lion137, 2018-02-05 21:06

Pozostało 580 znaków

2018-02-05 21:09

Rejestracja: 2 lata temu

Ostatnio: 1 miesiąc temu

0

chodzi o to ze np podaje 3
wczytuje: 1 2 3
wypisuje: 3 2 1
i te 123 zamienilo mi na binarną, atmal chyba dobrą wskazówke mi podpowiedział ale nie wiem za bardzo jak to zrobic.

Pozostało 580 znaków

2018-02-05 21:15

Rejestracja: 3 lata temu

Ostatnio: 1 godzina temu

0

Żeby zmienić tablicę na jednego inta możesz zrobić taki myk w Twojej pętli:

// Przed pętlą zadeklarowane jest number = 0
cin >> tab[i];
number += tab[i] * pow(10, n - i - 1);

Pamiętaj o dołączeniu biblioteki cmath.

Pozostało 580 znaków

2018-02-05 21:19

Rejestracja: 2 lata temu

Ostatnio: 1 miesiąc temu

0

o super o cos takiego mi chodzilo :) a mam jeszcze pytanie jak mogę przerobic ten program aby wczytał liczbę za jednym razem a nie cyfra po cyfrze?

Pozostało 580 znaków

2018-02-05 21:25

Rejestracja: 3 lata temu

Ostatnio: 1 godzina temu

0

Wczytanie nie jest problemem bo wystarczy:

int number;
cin >> number;

Musiałbyś przerobić funkcję rekurencja. Jeżeli chodzi tylko o wyświetlenie liczby to użyj modulo aby dostać ostatnią cyfrę, następnie wyświetl ją i rekurencyjnie wywołuj tą samą funkcję tylko z i / 10. Oczywiście pamiętaj o tym aby dodać jakiś warunek aby zatrzymać rekurencję ;)

Pozostało 580 znaków

2018-02-05 22:18

Rejestracja: 2 lata temu

Ostatnio: 1 miesiąc temu

0

udało mi sie po wskazowkach zrobić te zadanko tylko jest jeden mały problem, gdy wpisuje np.
123 wypisuje mi
3210 , nie rozumiem dlaczego wypisuje mi jeszcze 0 ?

#include<iostream>
#include<cstdlib>
#include<cmath>
using namespace std;

void rekurencja(int indeks)
{
    cout<<indeks%10;
    if(indeks>0)
        rekurencja(indeks/10);
}
void zamiana(int n)
{
    int i=0,tab[31];
    int licznik=0;
    while(n!=0)
    {
        tab[i++]=n%2;
        n/=2;
    }
    for(int j=i-1; j>=0; j--)
    {
        cout<<tab[j];
    }
}
int main()
{
    int n;
    cin>>n;
    rekurencja(n);
    cout<<endl;
    zamiana(n);

    return 0;
}

Pozostało 580 znaków

2018-02-05 22:22

Rejestracja: 3 lata temu

Ostatnio: 1 godzina temu

0

Zmień warunek w if na indeks >= 10.

edytowany 1x, ostatnio: atmal, 2018-02-05 22:28

Pozostało 580 znaków

Odpowiedz

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