Linguaggio c
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.
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
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].
Grazie per avermi aiutata a risolvere il problema. Comunque ho messo index-1 per intendere il precedente.