Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    23

    Problema Stringa

    Lo scopo del programma e' quello di convertire un numero decimale in binario.
    In ingresso prendo una stringa che contiene il numero decimale, la converto in un intero e poi genero una seconda stringa contenente il numeroo binario. Il fatto e' che dopo aver memorizzato la stringa del numero binario qualche volta (per es. con 300 e altri numeri) mi viene aggiunto un carattere alla fine della stringa (mi ha sempre aggiunto il char '@' ma credo che sia puro caso)... Allora ho provato ad inizializzare la stringa con char num_bin[DIM] = "0" ed il problema si risolve.... mi sapete spiegare come mai sto fatto?

    codice:
    /* num_da_conv = stringa contenente il numero decimale da convertire */
    /* num_conv =  stringa che dovrà contenere il numero convertito in binario */
    /* num_dec = numero decimale definito come integer */
    /* base_num = 2 */
    /* BASE_DEC = 10 */
    
    /* Converto la stringa contenente il numero decimale in integer */
    
    num_cifre = strlen(num_da_conv) - 1;
    for (i = 0,
          num_dec = 0;
          i <= num_cifre;
          num_dec += (num_da_conv[i] - '0') * ceil(pow(BASE_DEC, (num_cifre - i))),
          i++);
    
    /* Converto il numero decimale in binario */
    
    for (i = 0,
          num_conv[0] = '0';
          num_dec > 0;
          i++)
          { 
           num_conv[i] = (num_dec % base_num) + '0');                    
           num_dec = num_dec / base_num;
          }

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    23
    ah, vorrei precisare che il codice sopra si trova all'interno di una funzione; nel main inizializzo la stringa e poi passo il puntatore alla funzione. La suddetta stringa non viene utilizzata in altre operazioni...

  3. #3
    credo che il problema è che non termini la stringa. Credo che sarebbe meglio dopo il ciclo di conversione mettere un bel num_bin[i] = 0;

    Inoltre perchè non usi strtoul invece che fare tutto sto casino perchè non usi strtoul(num_da_conv, NULL, 2); ?

    Ciao

  4. #4
    Scusa ma l'uso di strtoul nel tuo caso va bene solo per la conversione da stringa a decimale ...non per convertire da decimale a stringa binaria...comunque ti eviti il primo ciclo.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    23
    grazie, terminando la stringa funge.. per quanto riguarda la conversione in integer ho utilizzato la funzione atoi visto che tanto il numero che devo convertire in integer e' in base 10...

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.