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

Conversione di un numero binario in decimale max 16bit

  1. #1
    giusina@05 non  in linea Novello
    Post
    8
    Like Inviati  
    0
    Like Ricevuti  
    0
    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
    Post
    17,505
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    35
    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 21:03 
    ℹ️ Leggi di pi su AntonioG ...

  3. #3
    giusina@05 non  in linea Novello
    Post
    8
    Like Inviati  
    0
    Like Ricevuti  
    0
    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
    Post
    17,505
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    35
    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 07:49 
    ℹ️ Leggi di pi su AntonioG ...

  5. #5
    giusina@05 non  in linea Novello
    Post
    8
    Like Inviati  
    0
    Like Ricevuti  
    0
    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
    312
    Like Inviati  
    2
    Like Ricevuti  
    3
    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
    decimale += binario[i]*pow(2,i)
    
    Poi stampi decimale

  7. #7
    giusina@05 non  in linea Novello
    Post
    8
    Like Inviati  
    0
    Like Ricevuti  
    0
    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 14:24 

  8. #8
    Ferrari_and non  in linea Scolaretto
    Post
    312
    Like Inviati  
    2
    Like Ricevuti  
    3
    Mofifica cos
    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
    Like Inviati  
    0
    Like Ricevuti  
    0
    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 14:55 

  10. #10
    giusina@05 non  in linea Novello
    Post
    8
    Like Inviati  
    0
    Like Ricevuti  
    0
    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 messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Xor binario e decimale
    Da Skary nel forum Altri linguaggi e strumenti
    Risposte: 13
    Ultimo Post: 04-01-2010, 03:57
  2. [C/C++] Conversione numero da decimale a binario
    Da masmil1988 nel forum C/C++
    Risposte: 7
    Ultimo Post: 16-10-2008, 01:41
  3. [C++] Conversione da binario a decimale
    Da Matteo.pietrucci90 nel forum C/C++
    Risposte: 6
    Ultimo Post: 06-03-2007, 22:02
  4. [C/C++] Da Decimale a Binario
    Da Freddy-Cats nel forum C/C++
    Risposte: 4
    Ultimo Post: 03-12-2005, 14:34
  5. [Pascal] Da decimale a binario
    Da Freddy-Cats nel forum C/C++
    Risposte: 9
    Ultimo Post: 01-12-2005, 19:00