Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543

    [C++] da numero decimale a binario (mi manca poco...)

    Buona sera,
    ho sviluppato un programmino che, come si legge dal titolo, converte numeri decimali in numeri binari. Il programma funziona e restituisce i valori corretti con due difetti:
    1) me li visualizza in ordine inverso (ma a quello ci penserò dopo, e proverò da solo a risolvere tale problema);
    2) non mi visualizza la prima cifra del resto: ad esempio io ho provato col numero 122 (il cui valore binario è 01111010 ), ma me lo visualizza in ordine inverso e senza la prima cifra, cioè così: [I] 1011110[I].
    Come sempre vorrei arrivare a risolvere problema senza avere la soluzione già bella e pronta: vorrei infatti arrivarci da solo mediante una Vostra delucidazione.
    Per tanto Vi posto il programma in questione:
    codice:
    #include <iostream>
    #include <cmath>
    
    using namespace std;
    
    int main()
    {
        const int divisore = 2;
        int resto;
        int ris;
        int n; // numero da convertire
        do
        {        
            cout << "Inserisci un numero positivo \n";
            cin >> n;
        }while (n < 0);
     
        while(n > 0)
        {
            n = n / divisore;
            resto = n % divisore;
            cout << "Il resto parziale e' " << resto << "\n";
            
        }
        system("pause");
        return 0;
    }
    Grazie e aspetto Vostre notizie.
    "To iterate is human, to recurse, divine." (R.(Heller))

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    24
    codice:
    while(n > 0)
        {
            n = n / divisore;
            resto = n % divisore;
            cout << "Il resto parziale e' " << resto << "\n";
            
        }
    quando determini la prima cifra binaria con resto = n % divisore hai già diviso per divosore il numero n. quindi ti perdi la prima cifra.
    esempio con n = 122
    n = n / divisore; // n diventa 61 e non memorizzi il resto di 122 % 2
    resto = n % divisore; // n è 61 quindi il resto è 1 che però è la seconda cifra binaria

    in sostanza inverti le righe n = n / divisore; e resto = n % divisore;
    spero di essermi spiegato.

  3. #3
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    ok, ho modificato e tutto funziona perfettamente. Ora visualizzo anche la prima cifra. In pratica, se ho capito bene, la nuova cifra - cioè il nuovo n - dove dochiararlo dopo il resto, così in questo modo mi memorizza prima il nuovo resto e poi crea il nuovo n (in questo caso 122 / 2 = 61). Un'altra curiosità: se volessi visualizzare il numero binario su di una colonna, invece di una riga, mi basterebbe fare una specie di totale+= resto .ma dichiarando "totale" prima, ottengo che non ha valore e pure se assegnassi a totale un valore 0, incorrerei nell'aggiunta di uno zero che in realtà non dev'essere calcolato.
    "To iterate is human, to recurse, divine." (R.(Heller))

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    24
    ehhh????

    scusami ma non ho capito cosa chiedi

  5. #5
    La conversione dec/bin devi per forza farla con le divisioni? Se puoi scegliere il metodo allora ti suggerisco anche di fare una prova con l operatore &.


  6. #6
    non basta andare a capo prima di scrivere ogni numero?

  7. #7
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    in pratica visualizzo il risultato in questo modo
    codice:
    0
    1
    0
    1
    1
    1
    1
    0
    che però sono n risultati, in questo caso 8 risultati diversi. Io vorrei visualizzarli tutti in unico risultato, quindi su di una riga per orizzontale per poi poter invertire le cifre e leggerle al contrario.
    Spero si essermi spiegato meglio stavolta.
    "To iterate is human, to recurse, divine." (R.(Heller))

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da the-bit
    in pratica visualizzo il risultato in questo modo
    codice:
    0
    1
    0
    1
    1
    1
    1
    0
    che però sono n risultati, in questo caso 8 risultati diversi. Io vorrei visualizzarli tutti in unico risultato, quindi su di una riga per orizzontale per poi poter invertire le cifre e leggerle al contrario.
    Spero si essermi spiegato meglio stavolta.

    Non so se hai riletto quello che hai scritto, ma adesso e' piu' confuso di prima ... VVoVe:

  9. #9
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    credo che capirai di piu se proverai a compilare il programma. Vedrai che ti restituisce n risultati su n righe. Ex: 122 forma 8 cifre binarie, un numero binario a 8 cifre. Io vorrie avere il risultato su unica riga orizzontale, in modo da poterlo "manovrare" e poter invertire le cifre.
    Se ancora ora non è chiaro, non so più in che modo spiegarmi.
    "To iterate is human, to recurse, divine." (R.(Heller))

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Scrivi

    cout << resto;

    e non andra' a capo ...

    Ma hai controllato che il programma funzioni correttamente?

    Devi per forza usare le divisioni?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.