Somma elementi array in C: risultato sbagliato

di il
6 risposte

Somma elementi array in C: risultato sbagliato

Posto il codice...
#include <stdio.h>
#define N 1000

int main()
{
    int i, somma;
    char c, a[N];
    
    somma = 0;
    
    for(i = 0; (c = getchar()) != '\n'; ++i)
    {
        a[i] = c;                                 
    }
    
    a[i] = '\0';
    
    for(--i; i >= 0; --i)
    {
        somma += a[i];
    }
    printf("%d", somma);
    scanf("%d");
}

non capisco dove sta l'errore..spero possiate aiutarmi..

6 Risposte

  • Re: Somma elementi array in C: risultato sbagliato

    Prova a sostituire
    
    for(i = 0; (c = getchar()) != '\n'; ++i)
        {
            a[i] = c;                                 
        }
    con
    
    while (c=getchar() != '\n')
    { 
    a[i]=c;i++;
    }
    
    e poi sostituisci
      for(--i; i >= 0; --i)
        {
            somma += a[i];
        }
    con
    
    int k=0;
    while (k < i)
    {
    somma = somma + a[k];
    k++;
    }
    
    dovrebbe funzionare.
  • Re: Somma elementi array in C: risultato sbagliato

    Ho fatto come dici, ma inserendo in input 123456789 mi stampa 9 invece di 45...posto il codice modificato...magari ho sbagliato qualcosa durante la modifica..
    #include <stdio.h>
    #define N 1000
    
    int main()
    {
        int i, somma, a[N];
        char c;
        
        somma = 0;
        
        while (c=getchar() != '\n')
        { 
            a[i] = c;
            i++;
            }
        
        a[i] = '\0';
        
        int k=0;
        while (k < i)
        {
            somma = somma + a[k];
            k++;
            }
        printf("%d", somma);
        scanf("%d");
    }
    
    
  • Re: Somma elementi array in C: risultato sbagliato

    Facendo il debug, mi sono accorto che il programma considera - inserendo in input 123456789 - a[0], a[1], a[2], .........., a[9] rispettivamente come 49, 50, 51,............., 57 e quindi fa la somma di questi numeri...considera gli elementi presenti nell'array come caratteri o sbaglio?
  • Re: Somma elementi array in C: risultato sbagliato

    CAMBIA COMPILATORE !
  • Re: Somma elementi array in C: risultato sbagliato

    Ma che compilatore? Il problema è che usi la funzione getchar, acquisisci un carattere (c) e poi trasferisci il valore di c nell'elemento dell'array, di tipo int... In questo modo si crea uno sfasamento di 48 dovuto alla differenza tra i valori ascii... Usa scanf per acquisire gli interi oppure togli 48 una volta inseriti come caratteri...
  • Re: Somma elementi array in C: risultato sbagliato

    luigibana96 ha scritto:


    Ma che compilatore? Il problema è che usi la funzione getchar, acquisisci un carattere (c) e poi trasferisci il valore di c nell'elemento dell'array, di tipo int... In questo modo si crea uno sfasamento di 48 dovuto alla differenza tra i valori ascii... Usa scanf per acquisire gli interi oppure togli 48 una volta inseriti come caratteri...
    ho risolto proprio utilizzando scanf.. grazie mille
Devi accedere o registrarti per scrivere nel forum
6 risposte