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

di Anonimizzato16289 il
10 risposte
#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

  • 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.
  • 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
  • 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.
  • tuixte ha scritto:


    Sai come utilizzare un array?
    spiacente,array non l ho mai utilizzato
  • Allora studiatelo, e vedrai che la soluzione di questo esercizio sarà chiara come il sole
  • 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?
  • 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.
  • 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
  • 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.
  • 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