Oppure

Loading
30/09/12 12:50
Heisenberg
salve a tutti. Dopo molte pene ho implementato questo codice, che mi dice se un numero inserito è un numero primo, oppure no ed in tal caso mi restituisce la lista di tutti i suoi divisori. Però ho alcuni problemi: innanzitutto volevo sapere se ci fosse un modo più sensato per fare in modo che se introduco qualcosa come "la vispa teresa" o "0.0034" o "'$%" o "45ty", il codice non vada in crash e mi dica semplicemente che ho inserito dello schifo, ed in secondo luogo vorrei sapere se ci sono errori vari di qualche tipo..

#include <iostream>
#include <stdlib.h>
using namespace std;

void chiedi_primo()
{
long long p;
char c;
float f;
int divisori = 0;

cout << "Digita un numero intero positivo: \n\n", cin >> p;
if (p == c || p == f || p == 0)
cout << "\nCos'e' questo !?\n\n", exit(0);
else if (p < 0)
cout << "\nNo! Voglio un numero positivo!\n\n";
else if (p < 2)
cout << "\nQuesto non e' un numero primo.\n\n";
else if (p == 2)
cout<<"\n" << p << " e' il numero primo piu' piccolo!\n\n";
else {
for (int q = 2; q <= p/2; q++)
if (p%q == 0) {
cout << p << " = " << q << " * " << p / q << endl;
divisori++;
}
if (divisori > 0)
cout <<"\nQuesto dimostra che "<< p <<" non e un numero primo.\n\n";
else
cout <<"\n"<< p <<" e' un numero primo!\n\n";
}
}
int main()
{
while (true)
chiedi_primo();

return 0;
}

Il punto è che compilato, funziona alla perfezione.. HELP!!

Grazie a tutti!!
aaa
30/09/12 15:17
Heisenberg
Inoltre potreste dirmi come inserire qualcosa affinché mi chieda se terminare il programma o proseguire? non ne vengo a capo!! me misero..
aaa
30/09/12 16:48
Postato originariamente da Heisenberg:

Inoltre potreste dirmi come inserire qualcosa affinché mi chieda se terminare il programma o proseguire? non ne vengo a capo!! me misero..


prima di return 0 metti system("Pause";);

per gli errori di quando inserisci caratteri alfanumerici si gestisce con le eccezioni...che si studiano più in là però ;)

P.S io per comodita quando devo usare cout, per andare a capo uso una cosa di questo genere

//...
//con endl vai a capo
cout << "Prima riga" << endl
        << "Seconda riga";
//...
Ultima modifica effettuata da 30/09/12 17:31
30/09/12 17:45
Perché aprire qui un thread a cui ti stanno rispondendo in

forum.html.it/forum/…

Sembra una mancanza di rispetto per chi ti risponde nell'altro forum ...
30/09/12 17:58
Postato originariamente da nessuno:

Perché aprire qui un thread a cui ti stanno rispondendo in

forum.html.it/forum/…

Sembra una mancanza di rispetto per chi ti risponde nell'altro forum ...


Quoto nessuno, anche se odio fare il moralista....è mancanza di rispetto per noi e/o per loro....nessuno ti viet di aprire due post su forum diversi, ma abbi almeno la pazienza di vedere se le risposte che ti danno ti soddisfino etc. Chiusa la piccola parentesi moralista :rofl:
30/09/12 18:11
Penso che sia esagerato parlare di morale ... è una parola forse troppo grande per la questione.

E' solo una questione di buona educazione, anche nell'uso di strumenti come i forum ...
30/09/12 18:39
Heisenberg
Premetto che non volevo mancare di rispetto a nessuno! L'unico motivo per cui l'ho fatto è che

1) sono in agonia ed il tempo stringe, ma sopratutto perchè

2) più persone mi rispondono meglio è..

scusate!
aaa
30/09/12 19:12
il tempo stringe o.O mica devi fare un software per la gestione della prossima missione spaziale....
aggiungo a quanto scritto prima, per migliorare il programmino togli tutto dalla funzione void, in quanto le funzioni servono per eseguire delle operazioni che vengono usate più e più volte nel programma...quindi ti conviene scrivere tutto nel blocco di main, altrimenti il programma risulta più lento....e alla lunga rischi di appesantirlo, sia in fatto di kb di eseguibile, che di tempo di esecuzione.