+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: Conversione di un numero binario in decimale max 16bit

  1. #1
    giusina@05 non è in linea Novello
    Post
    8

    Conversione di un numero binario in decimale max 16bit

    salve, sono una studentessa al primo anno, devo completare questo programma per il compito di informatica. Premetto che non ho un testo ma solo appunti del professore. ho provato a scrivere il programma ma mi restituisce moltissimi errori e non riesco a sistemarlo. potreste aiutarmi cortesemente, devo consegnarlo mercoledì e sto impazzendo.
    il comando cita: scrivere un programma che converta i numeri binari in decimali e che controlli che i numeri introdotti siano corretti. massimo 16 bit.
    codice HTML:
    #include <stdio.h>
    #include <math.h>
    #define DIM 16
    
    int main()
    {
    
    char binario[DIM] = {0}, decimale;
    int i;
    for (i=0; i<DIM; i++) {
      printf("inserire bit n %d:",i+1);
      scanf ("%d", & binario [i]);
    }
    
    for (i=16; i>=0; i--) {
    
         printf("bit: %d %d\n", binario[i], pow(binario[i],2));
    }
      return 0;
    }
    }
    aiutatemi a sistemarlo deve essere di 16 bit max e deve controllare che i numeri binari siano corretti.
    grazie mille

  2. #2
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,614
    Blogs
    5
    Intanto hai parlato di errori. Quali? Hai compilato?

    Poi ... all'inizio il ciclo for permette di inserire i bit ma non è detto che debbano essere 16 (devono essere al massimo 16) quindi DIM non va bene.
    Prima di tutto devi

    - il vettore puoi dichiararlo come int e non come char ... facilita le cose
    - chiedere all'utente quanti bit deve essere lungo il valore binario, indicando che al massimo si possono usare 16 bit
    - controllare che il valore inserito dall'utente sia compreso tra 1 e 16
    - usare il valore appena inserito (chiamalo nbit) per il ciclo for in cui chiedi di inserire i bit (il ciclo deve andare al contrario in modo da accettare prima il bit più alto)
    - controlla che il valore inserito sia 0 oppure 1 altrimenti chiedilo di nuovo

    Alla fine tu usi un ciclo per visualizzare il valore per ogni singolo bit ma non per il valore nel suo complesso.
    Fra l'altro questa

    pow(binario[i],2)

    è sbagliata perché non serve a calcolare quello che ti serve. Semmai deve essere

    binario[i] * pow(2, i)

    e devi sommarlo per tutti i bit del ciclo in una variabile (quella che hai chiamato decimale e che va azzerata all'inizio) che sarà il risultato da mostrare.



    P.S. Intanto chiariamo alcune cose ... Questo è un forum tecnico. Qui non si dà il codice pronto per risolvere gli esercizi, né per mercoledì né per la prossima settimana.
    Si ragiona con te e si danno consigli che tu puoi mettere in pratica correggendo quello che hai scritto.
    Ultima modifica di AntonioG; 18-05-2020 20:03 
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  3. #3
    giusina@05 non è in linea Novello
    Post
    8
    grazie per aver risposto, ovviamente chiedo consigli non che mi facciate voi il codice, ho cercato di seguire passo passo
    le istruzioni che mi ha dato. mi evidenzia errori sulle parentesi che non sono riuscito a togliere. Potreste dare un'altra occhiata. grazie


    codice HTML:
    #include <stdio.h>
    #include <math.h>
    #define DIM 17
    
    int main()
    {
    
    int binario[DIM] = {0};
    int i;
    int nbit=17;
    int decimale=0;
    for (i=0; i<nbit; i++) {
      if (nbit==0)
      if (nbit==1)
      printf("inserire bit n %d:",i+1);
      scanf ("%d", & binario [i]);
    }
    for (i=17; i>=0; i--) {
    
         printf("bit: %d %d\n", binario[i], binario[i]*pow(2,i)
    
    }
    
      return 0;
    }

  4. #4
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,614
    Blogs
    5
    Praticamente non hai fatto nulla di quello che ti avevo scritto. Perché nbit a 17? Devi inserire nbit da tastiera ti avevo detto. La printf finale non è scritta correttamente manca parentesi e punto e virgola finali.
    Le due if con nbit non hanno senso. nbit è il numero di bit non ha senso confrontarlo con 0 e 1. E il valore finale non l'hai calcolato. Quel for con tutte le printf non serve era solo un esempio per capire come calcolare il valore dei singoli bit.
    Ultima modifica di AntonioG; 19-05-2020 06:49 
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  5. #5
    giusina@05 non è in linea Novello
    Post
    8

    conversione da binario a decimale in C

    codice HTML:
    #include <stdio.h>
    #include <math.h>
    #define DIM 16
    
    int main()
    {
    
    int binario[DIM] = {0};
    int i;
    int nbit;
    int decimale=0;
    for (i=0; i<nbit; i++) {
      
      printf("inserire nbit n %d:",i+1);
      scanf ("%d", & binario [i]);
    }
    for (i=16; i>=0; i--) {
    
         printf("bit: %d %d\n", binario[i], binario[i]*pow(2,i));
    
    }
    
      return 0;
    }
    buongiorno, mi scusi ma ho molte difficoltà, il primo o il secondo for non va bene?
    l'ultima printf non dovrebbe stamparmi il dec finale, almeno il prof così aveva detto?
    grazie per la pazienza

  6. #6
    Ferrari_and non è in linea Scolaretto
    Post
    173
    Il primo cliclo for aquisisce il numero in decimale e protrebbe anche andare bene.
    Il secondo dovrebbe fare la conversione ma sicuramente non lo fa.
    La prima domanda il codice lo hai provato?

    Nel secondo cilco non devi mettere la stampa del decimale ma solo i calcoli della conversione
    codice:
    decimale += binario[i]*pow(2,i)
    Poi stampi decimale

  7. #7
    giusina@05 non è in linea Novello
    Post
    8

    conversione da binario a decimale in C

    non da errori ma non funziona, introducendo numeri binari dice che non funziona e stampa solo ripetutamente la sola scritta dell'ultimo stamp


    codice HTML:
    #include <stdio.h>
    #include <math.h>
    #define DIM 16
    
    int main()
    {
    
    int binario[DIM] = {0};
    int i;
    int nbit;
    int decimale=0;
    for (i=0; i<nbit; i++) {
      
      printf("inserire nbit n %d:",i+1);
      scanf ("%d", & binario [i]);
    }
    for (i=16; i>=0; i--) {
    
    printf("decimale+=binario[i]*pow(2,i)");
    
    }
    
      return 0;
    }
    Ultima modifica di giusina@05; 19-05-2020 13:24 

  8. #8
    Ferrari_and non è in linea Scolaretto
    Post
    173
    Mofifica così
    codice:
    for (i=16; i>=0; i--) {
         decimale+=binario[i]*pow(2,i);
    }
    printf(decimale);
    Decimale ti serve per calcolare il valore.
    Il ciclo for scorre dal più piccolo bit al più grande il numero binario.
    ogni volta lo sommi a Decimale se il bit è uno sommi la relativa potenza del 2

    Uscito dal ciclo stampi il valore di decimale.

    Così è più chiaro come funziona ho sono rimasti altri dubbi.
    L' errore era nel secondo cilco for in cui stampi l'operazione che devi fare senza farla mai.

  9. #9
    giusina@05 non è in linea Novello
    Post
    8

    conversione da binario a decimale in C

    grazie ho fatto la correzione, ma continua a stamparmi decimale e alla fine se introduco il numero binario mi dice che il comando non funziona
    codice HTML:
    #include <stdio.h>
    #include <math.h>
    #define DIM 16
    
    int main()
    {
    int binario[DIM] = {0};
    int i;
    int nbit;
    int decimale=0;
    for (i=0; i<nbit; i++) {
      printf("inserire nbit n %d:",i+1);
      scanf ("%d", & binario [i]);
    }
    for (i=16; i>=0; i--) 
         decimale+=binario[i]*pow(2,i);{
    
    printf("decimale");
    
    }
    
      return 0;
    }
    Ultima modifica di giusina@05; 19-05-2020 13:55 

  10. #10
    giusina@05 non è in linea Novello
    Post
    8
    in comando non funziona, inoltre dovrei anche controllare se i numeri binari siano corretti o meno (1 e 0 ) altrimenti riscrivere il numero.

+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi