Aiuto programma C

di il
9 risposte

Aiuto programma C

Ciao a tutti, sono nuovo, volevo chiedere un aiuto per correggere un programma. questo dovrebbe leggere una stringa e tradurla in un numero intero. sembra funzionare ma alla fine mi stampa sempre 0. qualcuno mi può aiutare a correggerlo?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int traduci_numero (char s[]);
int traduci_cifra (char s[]);

int main ()
{
char s[16];
int numero;

printf("inserisci una stringa da convertire \n");
scanf ("%s", s);

numero = traduci_numero(s);
printf ("il numero inserito è %d", numero );


return EXIT_SUCCESS;
}

int traduci_numero (char s[])
{
int i, j, risultato;
char temp[16];
i = 0; j = 0;
risultato = 0;


while (s != '\0')
{
if (s != ',' && s != '.')
{
temp[j] = s;
j++;
i++;
}
else
{
temp[j] = '\0';
risultato = risultato * 10 + traduci_cifra (temp);
j = 0;
i++;
}
}

return risultato;

}

int traduci_cifra (char s[])
{
int i;
char cifre[10][8] = { "zero", "uno", "due", "tre", "quattro", "cinque", "sei", "sette", "otto", "nove" };
for (i = 0; i < 10; i++)
if (strcmp (s, cifre) ==0)
return i;
return -1; /* cifra non valida */

}

9 Risposte

  • Re: Aiuto programma C

    Usa i tag Code per postare il codice altrimenti non si capisce niente
  • Re: Aiuto programma C

    Ma in quale formato sarebbe la stringa? Fai un esempio ...
  • Re: Aiuto programma C

    Si scusate , ecco:
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int traduci_numero (char s[]);
    int traduci_cifra (char s[]);
    
    int main ()
    {
       char s[16];
       int numero;
       
       printf("inserisci una stringa da convertire \n");
       scanf ("%s", s);
       
       numero = traduci_numero(s);
       printf ("il numero inserito è %d", numero );
      
    
       return EXIT_SUCCESS;
    }
    
    int traduci_numero (char s[])
    {
        int i, j, risultato;
        char temp[16];
        i = 0; j = 0;
    	risultato = 0;
    
        
        while (s[i] != '\0')
        {
           if (s[i] != ',' && s[i] != '.')
           {
           temp[j] = s[i];
           j++;
           i++;
           }
           else
           {
              temp[j] = '\0';
              risultato = risultato * 10 + traduci_cifra (temp);
              j = 0;
              i++;
           }
        }
    
     return risultato;
     
    }
    
    int traduci_cifra (char s[])
    {
    	int i;
        char cifre[10][8] = { "zero", "uno", "due", "tre", "quattro", "cinque", "sei", "sette", "otto", "nove" };
        for (i = 0; i < 10; i++)
           if (strcmp (s, cifre[i]) ==0)
               return i;
        return -1; /* cifra non valida */
    	
    }
    
  • Re: Aiuto programma C

    Premetto che non sono un esperto, anzi.. io vorrei poter inserire da tastiera ad esempio "tre" e vorrei che mi stampasse "3"
  • Re: Aiuto programma C

    Nella traduci_numero() inserisci una printf() per vedere come splitti le stringhe:
        while (s[i] != '\0')
        {
           if (s[i] != ',' && s[i] != '.')
           {
           temp[j] = s[i];
           j++;
           i++;
           }
           else
           {
              temp[j] = '\0';
              printf("%s\n",temp);//<<<<<<<<<<<<
              risultato = risultato * 10 + traduci_cifra (temp);
              printf("%d\n",risultato);//<<<<<<<<<<<<
              j = 0;
              i++;
           }
        }
    
  • Re: Aiuto programma C

    Ho provato ma non cambia nulla, mi stampa sempre :

    inserisci una stringa da convertire
    sei
    il numero inserito è 0


    (sei è la stringa che ho inserito da tastiera)
  • Re: Aiuto programma C

    L'errore é quindi nella traduci_numero(). Ma il programma lo hai scritto tu? prova ad inserire "sei."
  • Re: Aiuto programma C

    Si così funziona grazie ! no non tutto io, comunque se volessi leggere dei numeri da un file dati e trasformarli in interi come posso procedere?
  • Re: Aiuto programma C

    Fopen() fgets() e fclose().
    Ma prima di questo devi capire perché serve mettere il . nella traduci_numero() ...
Devi accedere o registrarti per scrivere nel forum
9 risposte