Dev c++, errore convertitore da numero intero a binario

di il
10 risposte

Dev c++, errore convertitore da numero intero a binario

#include<iostream>
#include<stdio.h>
using namespace std;

int main () {
    int n,bin, peso, cifra, temp;
    do { cout<<"inserisci un numero in base dieci"<<endl;
         cin>>n;
         }while(n<=0);
         
   do{
          if (n%2==0){
          cifra=0;}
          else {
               cifra=1;}
               n=n/2;
               cout<<cifra;
               }
   while (n>0);
   
  
          fflush(stdin);
          getchar();
          return 0;
               
                      
          
          
  }
ecco il codice del mio convertitore da numero intero a binario. purtroppo il programma mi stampa i numeri al contrario!
esempio:
se inserisco 39 il programma mi stampa "111001", mentre il numero convertito sarebbe "100111".

sapreste dirmi come far stampare il numero "dalla parte giusta"?
grazie mille per le eventuali risposte

10 Risposte

  • Re: Dev c++, errore convertitore da numero intero a binario

    E' naturale che stampi al contrario, il problema non è del dev (che pure è pieno di problemi.. ) ma del tuo codice.
    Invece di stampare direttamente i valori, salvali all'interno di un array, e poi scorrilo dall'ultimo al primo elemento.
  • Re: Dev c++, errore convertitore da numero intero a binario

    tuixte ha scritto:


    Invece di stampare direttamente i valori, salvali all'interno di un array, e poi scorrilo dall'ultimo al primo elemento.
    potresti farmi un esempio sul codice? grazie mille
  • Re: Dev c++, errore convertitore da numero intero a binario

    Sai come utilizzare un array?
    Piuttosto che stampare la variabile cifra, farai una cosa del tipo
    array[i] = cifra;
    ;
    per stampare il valore nell'ordine corretto:
    for(int i = 8; i >= 0; i--)
        cout << array[i];
    Inoltre, puoi utilizzare variabili di tipo bool piuttosto che int.. e togliere quelle quattro / cinque variabili che non utilizzi.
  • Re: Dev c++, errore convertitore da numero intero a binario

    tuixte ha scritto:


    Sai come utilizzare un array?
    spiacente,array non l ho mai utilizzato
  • Re: Dev c++, errore convertitore da numero intero a binario

    Allora studiatelo, e vedrai che la soluzione di questo esercizio sarà chiara come il sole
  • Re: Dev c++, errore convertitore da numero intero a binario

    tuixte ha scritto:


    Allora studiatelo, e vedrai che la soluzione di questo esercizio sarà chiara come il sole
    non c'è nessun altro modo per stamparli in ordine corretto senza usare array?
  • Re: Dev c++, errore convertitore da numero intero a binario

    Se proprio non vuoi usare un array, dovresti utilizzare 8 diverse variabili booleane in cui salvi le diverse "cifre", e stamparle poi partendo dall'ultima alla prima. E' un modo brutto di fare quello che fa un array.

    Altrimenti, piuttosto che dividere per due devi implementare un diverso algortimo.
    Supponiamo che avrai al massimo 8 bit, e il tuo numero va da un minimo di 0 a un massimo a 255.
    Se il tuo numero è maggiore di 2^7, allora la prima cifra è 1, altrimenti 0, e così via per tutte le cifre.
  • Re: Dev c++, errore convertitore da numero intero a binario

    tuixte ha scritto:


    Se proprio non vuoi usare un array, dovresti utilizzare 8 diverse variabili booleane in cui salvi le diverse "cifre", e stamparle poi partendo dall'ultima alla prima. E' un modo brutto di fare quello che fa un array.
    scusami se ti disturbo ancora , mi potresti fare un esempio sul codice di questo "brutto modo"?
    grazie mille e ancora grazie
  • Re: Dev c++, errore convertitore da numero intero a binario

    Dichiarare un array del tipo
    bool array[8];
    equivale a creare 8 variabili
    bool v1;
    bool v2;
    ...
    bool v3;
    In ogni caso, se non vuoi utilizzare array ti consiglio di modificare il tuo algoritmo, come ho scritto sopra.
  • Re: Dev c++, errore convertitore da numero intero a binario

    tuixte ha scritto:


    Dichiarare un array del tipo
    bool array[8];
    equivale a creare 8 variabili
    bool v1;
    bool v2;
    ...
    bool v3;
    In ogni caso, se non vuoi utilizzare array ti consiglio di modificare il tuo algoritmo, come ho scritto sopra.

    ok, grazie mille.
Devi accedere o registrarti per scrivere nel forum
10 risposte