Linguaggio c

Mikki0222
Ciao a tutti, sto riscontrando problemi ad eseguire questo programma in linguaggio c: quando cerco di eseguirlo mi esce scritto "Segmentation fault (core dumped)". Dove è il problema? Grazie in anticipo a chi mi aiuterà.

Il programma è questo:
Scrivere un programma che dato un vettore verifichi che esista almeno un numero doppio del precedente.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
 //Dichiarazione di un array di 100 interi
 const int maxDim = 100;
 int v[maxDim];
 int dimensione;
 int index;
 int doppio;
 //Inserimento della dimensione dell'array
 printf("Inserisci la dimensione dell'array (max %d): ", maxDim);
 scanf("%d", &dimensione);
 //Controllo di allocazione statica
 if ((dimensione > 0) && (dimensione <= maxDim)) {
   //Lettura dell'array
   for(index = 0; index < dimensione; index++){
   printf("Inserisci il valore %d-esimo: ", index);
   scanf("%d", &v[index]);
   }
  
   //Inizio ricerca
   v[doppio] = 0;
   while((index < dimensione) && (v[doppio] == 0)) {
     if (v[doppio] == 2*v[index-1]){
     v[doppio] = 1;
     }
   index++;
   }
   
   //Stampa
   if(v[doppio]==1) {
   printf("L'elemento doppio del precedente e'%d", doppio);
   } else {
   printf("Errore: la dimensione inserita e' maggiore di %d", maxDim);
   }
 }
 return 0;
}

Risposte
apatriarca
Così ad una prima occhiata non hai inizializzato [tt]doppio[/tt] prima di utilizzarlo e non hai azzerato [tt]index[/tt] prima di fare un secondo ciclo lungo il tuo array. Non mi è poi chiaro perché all'interno del secondo ciclo accedi a [tt]index-1[/tt] invece che a [tt]index[/tt].

Mikki0222
Grazie per avermi aiutata a risolvere il problema. Comunque ho messo index-1 per intendere il precedente.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.