Semplice errore di segmentazione

di il
2 risposte

Semplice errore di segmentazione

Buonasera,
Sono nuovissimo sia nel forum sia nella programmazione.
Mi stavo cimentando in un semplice programmino che desse in output la somma degli elementi della sottomatrice con la somma maggiore (di una matrice più grande, il numero di celle è indicato dai define).
Purtroppo il compilatore non da problemi, ma all'esecuzione si blocca dopo l'inserimento della matrice, ed eseguendo il debug mi viene indicato un errore di segmentazione alla istruzione: VS[j]+=m[k];
Ringrazio chiunque riuscirà a darmi anche solo dei piccoli consigli per risolvere o comunque spostarmi verso la risoluzione.

Posto il codice completo e ringrazio ancora in anticipo:

#include <stdio.h>
#include <stdlib.h>
#define N 3
#define M 3
#define Z 2
#define T 2
#define H (N-Z+1)*(M-T+1)
main()
{
int m[N][M],i,k,j,a,b,VS[H],max;
j=max=0;

for(j=0;j<H;j++)
VS[j]=0;

printf("Inserisci gli elementi della matrice positivi");

for(i=0;i<N;i++)
for(k=0;k<M;k++)
scanf("%d",&m[k]);


for(a=0;a<(N-1);a++)
{
for(b=0;b<(M-1);b++)
{
for(i=a;i<(a+Z);i++)
{
for(k=b;k<(b+T);k++)
VS[j]+=m[k];

}
j++;
}
}


for(j=0;j<H;j++)
{
if(VS[j]>max)
max=VS[j];
}

printf("%d",max);


printf("\n\n");
system("PAUSE");
return 0;
}

2 Risposte

  • Re: Semplice errore di segmentazione

    Questo succede se uno dei tre indici supera il massimo consentito.
  • Re: Semplice errore di segmentazione

    oregon ha scritto:


    Questo succede se uno dei tre indici supera il massimo consentito.
    Problema risolto, la parte di inizializzazione e input l'avevo usata da un altro mio programma, e giustamente mancava un istruzione che riportasse a 0 j dopo aver inizializzato il vettore. Questo portava il ciclo a partire gia dal suo massimo, ed ecco spiegato l'errore del debug.
    Che errore stupido.. almeno ho capito cosa implica il messaggio "errore di segmentazione" per il futuro!
    Grazie per aver acceso la lampadina
Devi accedere o registrarti per scrivere nel forum
2 risposte