[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!