[C++] Da binario a decimale

di il
5 risposte

[C++] Da binario a decimale

Salve, non riesco a fare questo programma, ogni volta che deve dare l'output dà 0.
#include <iostream>
#include <cmath>
#include <string>
using namespace std;

int main()
{   string nbin; //numero binario
    int decimale; //output decimale
    int i; //variabile ciclo
    cout <<"Numero";
    cin >>nbin;
    cout<<nbin.size()<<endl;
    for (i=0; i<nbin.size(); i++) {
    	if(nbin[i]==1)
    	decimale+=pow(2, i);
    	cout<<decimale;
    	return 0;
}
    	
	}
Mi è stato chiesto di usare solo string e cmath, niente vettori nè altro.
Se qualcuno può aiutarmi, grazie mille!

5 Risposte

  • Re: [C++] Da binario a decimale

    Ciao, all'interno della stringa ci sono caratteri, non numeri. Quindi il confronto lo devi fare con
    if(nbin[i]=='1')
  • Re: [C++] Da binario a decimale

    minomic ha scritto:


    Ciao, all'interno della stringa ci sono caratteri, non numeri. Quindi il confronto lo devi fare con
    if(nbin[i]=='1')
    Fatto, stessa storia..
  • Re: [C++] Da binario a decimale

    C'è comunque un altro errore: le potenze sono in senso opposto a come le stai contando tu. Quindi il 2^0 è l'ultimo carattere (cioè l'ultimo numero), mentre il primo corrisponde alla potenza massima...
  • Re: [C++] Da binario a decimale

    minomic ha scritto:


    C'è comunque un altro errore: le potenze sono in senso opposto a come le stai contando tu. Quindi il 2^0 è l'ultimo carattere (cioè l'ultimo numero), mentre il primo corrisponde alla potenza massima...
    E quindi come dovrei fare?
  • Re: [C++] Da binario a decimale

    Ecco qui:
    
    #include <iostream>
    #include <cmath>
    #include <string>
    using namespace std;
    
    int main() {
        string nbin; //numero binario
        int decimale = 0; //output decimale
        int i; //variabile ciclo
        cout <<"Numero: ";
        cin >> nbin;
        int lunghezza = nbin.size();
        for (i = 0; i < lunghezza; i++) {
            if(nbin[i] == '1') {
                decimale += pow(2, lunghezza-1-i);
            }
        }
        cout << "Decimale: " << decimale << endl;
    
        return 0;
    
    }
    
Devi accedere o registrarti per scrivere nel forum
5 risposte