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.