[C] il programma parte ma si blocca
salve!praticamente ho svolto questo esercizio , solo che non capisco perchè , il programma parte , solo che dopo aver inserito i valori e al momento di stampare di da "il programma ha smesso di funzionare" e si è interrotto , ho sbagliato qualcosa? al momento di compilare non mi ha dato errori , quindi immagine che possa essere solo un problema al livello "logico" grazie in anticipo
Descrivere un algoritmo codificato in linguaggio C/C++ che dopo aver letto un array A a 1000 elementi
interi da standard input, calcoli e stampi su standard output
la somma degli elementi di A in cui A[i] è multiplo di i.
#include <stdio.h>
#include <stdlib.h>
int main() {
int i , A[1000] , somma;
somma=0;
for(i=0 ; i<1000 ; i++){
scanf("%d" , &A[i]);
}
for(i=0 ; i<1000 ; i++){
if (A[i]%i==0) {somma=somma+A[i];}
}
printf("%d" , somma);
return 0;
}
Risposte
Hai inserito 1000 elementi a mano
.
Comunque fai il resto con \(\displaystyle 0 \) e con \(\displaystyle 1 \). Matematicamente parlando è una operazione discutibile.
Comunque fai il resto con \(\displaystyle 0 \) e con \(\displaystyle 1 \). Matematicamente parlando è una operazione discutibile.
l'esercizio mi chiedeva 1000 , ma al momento di controllare il programma ho modificato i valori in 10
ho sbagliato qualcosa?
ho sbagliato qualcosa?
Io ti consiglio di dare una bella occhiata a GDB o a qualche altro debugger. Prima o poi lo dovrai imparare, meglio prima che poi
scusa la mia ignoranza , a cosa serve?
A rispondere da solo alle tue questioni "il programma si blocca e non capisco dove sia il problema"
utilizzando un debugger puoi fare dell'analisi dinamica.
In particolare avresti visto che come suggerito in precedenza non puoi fare la divisione in modulo 0
In particolare avresti visto che come suggerito in precedenza non puoi fare la divisione in modulo 0
ho installato gdb come suggerito , effettivamente ora mi da degli errori solo che non capisco cosa vogliano dire

http://i60.tinypic.com/2hi56hf.jpg

http://i60.tinypic.com/2hi56hf.jpg
Io e Cronovirus ti abbiamo già detto dove cercare l'errore. Se scrivi
Comunque, se hai errori con un programma è meglio se non lo cambi prima di portarlo.
somma =A[1];
for(i=2;i<1000;++i)
if(A[i]%i==0)
somma+= A[i]; dovrebbe funzionare.Comunque, se hai errori con un programma è meglio se non lo cambi prima di portarlo.
scusa se rompo ancora , ma ho un dubbio teorico perchè si pone "somma=A" e non si inizializza a 0?
Perché il resto con 1 è sempre 0.
grazie ho capito!