• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Problema risolto Verificare se un numero è primo.. Crasha.. Perchè?

Akylle

Utente Attivo
Autore del topic
9 Settembre 2009
260
0
Miglior risposta
0
Ciao a tutti.. Ho provato a scrivere questo programmino, però, non appena inserisco il numero, il programma crasha e non so perchè.. Spero mi potrete aiutare (anche sulla struttura, se è corretta per lo scopo del programma)
Grazie mille

Akylle

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
 
Ho trovato l'errore subito. Anche io studio il C all'università, e ho fatto qualche giorno fa un esercizio simile... L'errore sta nella scanf, ora ti spiego...

Tu hai scritto questo: scanf("%d",N);
Manca la "e commerciale", ovvero questa: &.
Quindi dovresti scrivere così: scanf("%d", &N);

La funzione scanf oltre al tipo di carattere e al nome della variabile, richiede anche l'indirizzo di memoria a cui la variabile stessa è allocata.
Quando dichiari una variabile, essa ha uno spazio in memoria che occupa, e la & (in parole semplici) dice al programma che il valore letto da input deve essere memorizzato a partire dall'indirizzo della variabile... Senza questa &, non so come si comporti bene il programma, ma ti salva la variabile in un indirizzo di memoria casuale, quindi la variabile che andrai a usare risulterà vuota o non completamente piena...

PS: Mi fido del fatto che l'algoritmo sia fatto bene, non l'ho controllato, dato che per prima cosa ho trovato l'errore nello scanf.
 
Ho trovato l'errore subito. Anche io studio il C all'università, e ho fatto qualche giorno fa un esercizio simile... L'errore sta nella scanf, ora ti spiego...

Tu hai scritto questo: scanf("%d",N);
Manca la "e commerciale", ovvero questa: &.
Quindi dovresti scrivere così: scanf("%d", &N);

La funzione scanf oltre al tipo di carattere e al nome della variabile, richiede anche l'indirizzo di memoria a cui la variabile stessa è allocata.
Quando dichiari una variabile, essa ha uno spazio in memoria che occupa, e la & (in parole semplici) dice al programma che il valore letto da input deve essere memorizzato a partire dall'indirizzo della variabile... Senza questa &, non so come si comporti bene il programma, ma ti salva la variabile in un indirizzo di memoria casuale, quindi la variabile che andrai a usare risulterà vuota o non completamente piena...

PS: Mi fido del fatto che l'algoritmo sia fatto bene, non l'ho controllato, dato che per prima cosa ho trovato l'errore nello scanf.

Modificare lo scanf non serve a nulla, come ho detto prima, si dovrebbe implementare un algoritmo.
 
Ehi ehi.. Tranquilli.. Avevo già trovato il problema.. Solo mi ero dimenticato di avere postato..
Si.. Il problema era quello, ma c'era anche un errore nel ciclo while, perchè avevo messo == anzichè != ...
Comunque oggi ho avuto un attimo di tempo e l'ho rivisto.. E sono giunto al codice perfezionato.. Apro un nuovo topic.. Qua si può chiudere ^^
Grazie

Akylle

PS: Io sono in prima superiore ;)
--------------- AGGIUNTA AL POST ---------------
@System32 L'algoritmo c'è.. Dai un occhiata alla versione finale.. Forse è un po' più chiaro..

Akylle
 
Ultima modifica: