Problema con una funzione esterna al main

di il
5 risposte

Problema con una funzione esterna al main

Salve a tutti potreste aiutarmi a risolvere questa funzione, penso di averla fatta bene pero non mi restituisce il valore giusto.
Dovrebbe restituirmi la somma della matrice.
int somma (int mat[][100],int r,int c){
int i,j;
int soma=0;
for(i=0;i<r;i++){
for(j=0;j<c;j++){
soma=soma+mat[j];
}
}
printf ("\nLa somma degli elementi della matrice e %d",soma);
return soma;
}
poi la richiamo nel main in questo modo:

s=soma(mat, r ,c);
e poi faccio la printf per stampare il risultato ma mi da un valore non corretto.
Potreste aiutarmi?

5 Risposte

  • Re: Problema con una funzione esterna al main

    Mostra tutto il codice compreso il main e usa i tag CODE o non si capisce nulla
  • Re: Problema con una funzione esterna al main

    int somma (int mat[][100],int r,int c);
    int main(int argc, char** argv) {
        int i,j;
        int r,c;
        int s=0;
        puts("Inserisci il valore di r e c");
        scanf("%d %d",&r,&c);
        int mat[r][c];
        puts("Inserisci gli elementi ");
        for(i=0;i<r;i++){
            for(j=0;j<c;j++){
                scanf("%d",&mat[i][j]);
            }
        }
        for(i=0;i<r;i++){
            printf("\n");
            for(j=0;j<c;j++){
                printf("%d",mat[i][j]);
            }
        }
        s=somma(mat,r,c);
         printf ("\nLa somma degli elementi della matrice e %d",s);
       
        
        return (EXIT_SUCCESS);
    }
    int somma (int mat[][100],int r,int c){
        int i,j;
        int soma=0;
         for(i=0;i<r;i++){
            for(j=0;j<c;j++){
                soma=soma+mat[i][j];
            }
        }
       
        return soma;
    }
    
  • Re: Problema con una funzione esterna al main

    Non sembra ci siano problemi. Che valori inserisci e cosa hai come risultato?
  • Re: Problema con una funzione esterna al main

    Stabilito che sia una matrice 2x2 inserisco i valori da 1 a 4 e mi da come risultato della somma un numero negativo come se fosse l indirizzo
  • Re: Problema con una funzione esterna al main

    Il problema è nell'uso dell'array dinamico (VLA) e nel suo passaggio alla funzione. Usa un massimo e poi chiedi le dimensioni

    #define MAXDIM 100

    int somma(int mat[][MAXDIM], int r, int c);

    e nel main

    int mat[MAXDIM][MAXDIM];

    eliminando


    int mat[r][c];
Devi accedere o registrarti per scrivere nel forum
5 risposte