Crash del programma - C

di il
11 risposte

Crash del programma - C

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;
}

11 Risposte

  • Re: Crash del programma - C

    Pensa bene a quali valori assumono n ed i
    Dovrebbe esserti chiaro il problema

    Ma tutto questo lo fai per studio?
  • Re: Crash del programma - C

    N assume il valore che gli do io, invece i parte da 0 e prosegue fino ad n controllando per ogni numero se è un suo divisore...
    non è giusto?

    si lo faccio per studio, mi esercito facendo vecchi esercizi di testi degli anni passati
  • Re: Crash del programma - C

    Hai provato con la calcolatrice a fare i conti?
    Caso per caso?


    Cosa studi?
  • Re: Crash del programma - C

    Che devo controllare con la calcolatrice? n%i restituisce il resto della divisione... se il resto della divisione è 0 allora è un divisore e aumenta la variabile cont.
  • Re: Crash del programma - C

    Fallo e scoprirai il perché

    Il tuo problema è che non fai: parli pensi, credi, ma non fai

    Fallo e vedrai...
  • Re: Crash del programma - C

    ragazzo1223 ha scritto:


    i parte da 0
    E in questo caso cosa succede? Probabilmente credi di saperlo ma non lo sai veramente ...
  • Re: Crash del programma - C

    Ahhhhh hai ragione, non può fare n%0 ecco perché crashava...
    infatti se faccio iniziare i da 1 il programma funziona alla perfezione
    #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{		
    		conto=0;
    		scanf("%d", &n);
    		for(i=1; i<n; i++){
    			if(n%i==0){
    				conto++;
    			}
    		}
    		
    		fprintf(fp,"%d %d\n", n, conto);	
    		}while(n>=1);
    
    	}
    	
    	fclose(fp);
    
    	return 0;
    }
  • Re: Crash del programma - C

    Infatti ... è una sola parola ...
  • Re: Crash del programma - C

    "In fatti" le cose sono differenti che "in parole"


    Scusate il gioco di parole

    Ma serve per dire che se non si fanno i fatti, le parole fanno danni
  • Re: Crash del programma - C

    Si giusto... infatti è una sola parola, a quest'ora sono fuso

    Standard senza di te probabilmente sarei rimasto giorni a pensare inutilmente al problema, so di avere quel difetto di cui parli, mi impegnerò a risolverlo grazie mille
  • Re: Crash del programma - C

    Grazie a te

    Ho un nipote come te, ecco perché mi scaldo...
Devi accedere o registrarti per scrivere nel forum
11 risposte