Dubbio su programma di C.

di Anonimizzato13124 il
9 risposte
Buon pomeriggio a tutti , sono alle prese con un programmino di C che effettui la conversione di 2 numeri da decimale a binario( che presenta degli errori).
Non capisco perche mi converte il primo numero che io inserisco e quando poi inserisco il secondo numero invece non lo fa!
#include<stdio.h>


 int main(void){
    const char output[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    const char output2[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    int numero , base, index=0 ,next;
    int numero2,base2, index2=0, next2;
    int nconv[70];
    int nconv2[70];
    
    printf("digita il numero in base 10 :  \n");
    scanf("%i",&numero);
    printf("digita la base : ");
    scanf("%i",&base);
    
    while(numero!=0){
                     nconv[index]=numero%base;
                     index++;
                     numero=numero/base;
                     //numero/=base;// istruzione per uscire dal while
                     }
                     printf("numero convertito :");
                     for(--index;index>=0;--index){
                                                   next=nconv[index];
                                                   printf("%c", output[next]);
                                                   
                     }
                     //getchar();
                     //getchar();
                     
               
                    
                     
    printf("\n\n");               
    printf("digita il secondo numero in base 10 :  \n");
    scanf("%i",&numero2);
    printf("digita la base : ");
    scanf("%i",&base2);
    
    while(numero2!=0){
                     nconv[index2]=numero2%base2;
                     index++;
                     numero2=numero2/base2;
                     //numero/=base;// istruzione per uscire dal while
                     }
                     printf("numero convertito :");
                     for(--index2;index2>=0;--index2){
                                                   next2=nconv2[index2];
                                                   printf("%c", output2[next2]);
                                                   }
                                                   
                                                   getchar();
                                                   getchar();
                                                   }
    







9 Risposte

  • Prova a ragionare sul valore di index
  • Index1 o index 2?
  • Presumo index2. ma non riesco a capire come potrei modificarlo :/
  • Insomma ... guarda qui
    
    nconv[index2]=numero2%base2;
    index++;
    
  • Dovrei mettere index2++ , ma non mi va lo stesso :/
  • Fai attenzione ... anche la prima linea è da correggere ...
  • Hai ragione oregon, non ci avevo fatto caso.. adesso funziona..
    Ma se per fare la somma binaria dei 2 risultati prodotti come potrei proseguire?? :/
  • A parte il fatto che quel programma lo dovresti rifare con una funzione da chiamare due volte, che cosa vorresti fare? La somma binaria è un altro esercizio? Chiarisci, eventualmente in un altro thread.
  • E infatti , non c'è un modo ricorsivo per utilizzare questa funzione senza riscrivere il programma per intero?
Devi accedere o registrarti per scrivere nel forum
9 risposte