Ciao, sta volta mi sono bloccato in questo esercizio... vi spiego brevemente il problema, il programma compila ma appena si avvia ed inserisco il primo numero crasha istantaneamente.
il problema del crash deriva dalla riga "if(n%i==0)", ho notato che se inverto i con n ossia: if(i%n==0) il programma non crasha, solo che in sto caso mi da il risultato sbagliato...
sapreste dirmi come mai crasha dopo che digito il primo numero?
/*Scrivere un programma che chiede all’utente una sequenza di lunghezza indefinita di numeri positivi
terminata da un valore non positivo. Il programma conta per ciascun valore della sequenza tutti i
divisori propri (cioè diversi dal valore stesso) e salva nel file “risultati.txt” su ogni riga la coppia
valore letto e numero divisori propri trovati. Ad esempio: se l’utente inserisce la sequenza
1 5 4 3 2 8 9 -1
Il programma salverà nel file risultati.txt il seguente contenuto:
1 0
5 1
4 2
3 1
2 1
8 3
9 2
*/
#include <stdio.h>
int main(){
FILE* fp;
int temp;
int n=0;
int i;
int conto=0;
fp=fopen("risultati.txt", "w");
if(fp==NULL){
printf("errore nell'apertura del file");
}else{
do{
scanf("%d", &n);
for(i=0; i<n; i++){
if(n%i==0){
conto++;
}
}
fprintf(fp,"%d %d\n", n, conto);
}while(n>=1);
}
fclose(fp);
return 0;
}