Domanda Conversione Decimale/Binario

Stato
Discussione chiusa ad ulteriori risposte.

1222222

Utente Bronze
11 Febbraio 2016
2
1
0
29
Salve a tutti, a scuola abbiamo programmato un algoritmo che svolge la conversione da decimale a binario, solo che il risultato in binario viene rappresentato al contrario, in pratica il risultato invece di venire per esempio 1000 mi viene 0001, ho sentito dire che un metodo per correggere questo errore sarebbe attraverso l'uso degli array, qualcuno sa come comportarsi?
 
Ultima modifica da un moderatore:
C++:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{ int num, r;
  cout<<"Leggere il numero al contrario. "<<endl;
do
{
  cout<<"Inserire numero da convertire:"<<endl;
  cin>>num;
   if(num<0)
    {
     cout<<"inserire un numero positivo: "<<endl;
    }
}
while(num<0);
do
  {
    r=num%2;
    num=num/2;
    cout<<r<<endl;
   }
  while(num!=0);
 
La divisione reiterata per la base ti da le cifre dalla meno significativa alla più significativa, quindi devi scriverle nell'ordine inverso a quello in cui le trovi per avere il numero giusto.

Ti basta salvarle da qualche parte invece di stamparle subito e fare la stampa dopo, in un altro ciclo
 
  • Mi piace
Reazioni: Scanetatore
Salve a tutti, a scuola abbiamo programmato un algoritmo che svolge la conversione da decimale a binario, solo che il risultato in binario viene rappresentato al contrario, in pratica il risultato invece di venire per esempio 1000 mi viene 0001, ho sentito dire che un metodo per correggere questo errore sarebbe attraverso l'uso degli array, qualcuno sa come comportarsi?

Potresti aggiungere un vettore, salvare i resti (quindi i bit dal lsb al msb) nel vettore, e poi stampare quel vettore dalla posizione dell'ultimo resto inserito.

Codice:
#include <iostream>

using namespace std;

int main(int argc, char *argv[]) {
    int num, r;
    int V[32]; //32 bit di rappresentazione
    int i = 0;
    cout << "Leggere il numero al contrario. " << endl;
    do {
        cout << "Inserire numero da convertire:" << endl;
        cin >> num;
        if (num < 0) {
            cout << "inserire un numero positivo: " << endl;
        }
    } while (num < 0);
    do {
        r = num % 2;
        num = num / 2;
        V[i++] = r;
    } while (num);
    while (i) { //while i>0
        cout << V[--i];
    }
}
 
Salve a tutti, a scuola abbiamo programmato un algoritmo che svolge la conversione da decimale a binario, solo che il risultato in binario viene rappresentato al contrario, in pratica il risultato invece di venire per esempio 1000 mi viene 0001, ho sentito dire che un metodo per correggere questo errore sarebbe attraverso l'uso degli array, qualcuno sa come comportarsi?
Hai risolto?
 
Stato
Discussione chiusa ad ulteriori risposte.