Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di fenics
    Registrato dal
    Aug 2004
    Messaggi
    446

    [C] conversione da binario a decimale

    Ciao a tutti, questo sotto è la conversione di un numero decimale a binario:
    codice:
    #include<stdio.h>
    
    #define MAX 32
    
    void conversione(int bin[], int dec);
    void stampa(int bin[]);
    
    main()
    {
        int binario[MAX], decimale;
    
        printf("Inserisci un valore decimale: ");
        scanf("%d", &decimale);
    
        conversione(binario, decimale);
        stampa(binario);
    
        return 0;
    }
    
    void conversione(int bin[], int dec)
    {
        int i;
    
        for(i=0; i<=32; i++)
        {
            if(dec%2==0)
                bin[i]=0;
            else
                bin[i]=1;
            dec=dec/2;
        }
    }
    
    void stampa(int bin[])
    {
        int i;
        int controllo_uno=0;
    
        for(i=32; i>=0; i--)
        {
            if(bin[i]==1)
            {
                controllo_uno=1;
            }
            if(controllo_uno==1)
            {
                printf("%d", bin[i]);
            }
       }
       system("PAUSE");
    }
    Ma se devo fare il contrario??

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Parti dalla teoria ... quali operazioni devi fare per questa conversione?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di fenics
    Registrato dal
    Aug 2004
    Messaggi
    446
    esempio 110010.

    parto da dx che sarebbe 2^1, spostandomi verso sx sono 2^2, 2^3 ecc... quindi 1, 2, 4, 8 e così via. l'ultimo 1 corrisponde a 32 + 12 + 2 = 50.

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    C'entra niente, ma se hai una costante MAX che vale 32 perché poi usi 32 e non MAX?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it L'avatar di fenics
    Registrato dal
    Aug 2004
    Messaggi
    446
    giusto, quello è vero ed ho corretto

    comnq ho provato modificare il codice, solo che come risultato mi da sempre 0
    codice:
    #include<stdio.h>
    
    #define MAX 32
    
    void conversione(int bin[], int dec);
    void stampa(int dec);
    
    main()
    {
        int binario[MAX], decimale;
    
        printf("Inserisci un valore binario: ");
        scanf("%d", &binario[MAX]);
    
        conversione(binario, decimale);
        stampa(decimale);
    
        return 0;
    }
    
    void conversione(int bin[], int dec)
    {
        int i;
    
        for(i=0; i<=MAX; i++)
        {
            if(dec%2==0)
                bin[i]=0;
            else
                bin[i]=1;
            dec=dec/2;
        }
    }
    
    void stampa(int dec)
    {
        int i, bin[MAX];
    
        for(i=0; i<=MAX; i++)
        {
            if(dec%2==bin[MAX])
                printf("%d", dec);
       }
       system("PAUSE");
    }
    Ultima modifica di fenics; 22-04-2014 a 12:21

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    La variabile decimale viene passata per copia pertanto qualsiasi modifica subirà all'interno del metodo morirà all'interno di quel metodo.

    E poi... sei sicuro che quel metodo converta un numero binario in un numero decimale?

    edit

    La fase di acquisizione del numero binario è sbagliata. O lo leggi cifra per cifra oppure lo leggi come una stringa. Leggere un array così non ha senso.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7

    Moderazione

    Come già detto numerose volte, il linguaggio di riferimento va indicato nel titolo...
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Quote Originariamente inviata da fenics Visualizza il messaggio
    parto da dx che sarebbe 2^1, [...]

    Ehm... no: si parte da 2^0.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Utente di HTML.it L'avatar di fenics
    Registrato dal
    Aug 2004
    Messaggi
    446
    ok! ho capito il procedimento, grazie!!

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.