Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - [C++] Tanti dubbi su questo codice, che però funziona...
Forum - C/C++ - [C++] Tanti dubbi su questo codice, che però funziona...

Avatar
Heisenberg (Normal User)
Newbie


Messaggi: 3
Iscritto: 30/09/2012

Segnala al moderatore
Postato alle 14:50
Domenica, 30/09/2012
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!!

PM Quote
Avatar
Heisenberg (Normal User)
Newbie


Messaggi: 3
Iscritto: 30/09/2012

Segnala al moderatore
Postato alle 17:17
Domenica, 30/09/2012
Inoltre potreste dirmi come inserire qualcosa affinché mi chieda se terminare il programma o proseguire? non ne vengo a capo!! me misero..

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 18:48
Domenica, 30/09/2012
Testo quotato

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

Codice sorgente - presumibilmente Plain Text

  1. //...
  2. //con endl vai a capo
  3. cout << "Prima riga" << endl
  4.         << "Seconda riga";
  5. //...


Ultima modifica effettuata da il 30/09/2012 alle 19:31
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5461
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:45
Domenica, 30/09/2012
Perché aprire qui un thread a cui ti stanno rispondendo in

http://forum.html.it/forum/showthread.php?s=&threadid=1522936

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


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 19:58
Domenica, 30/09/2012
Testo quotato

Postato originariamente da nessuno:

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

http://forum.html.it/forum/showthread.php?s=&threadid=1522936

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:

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5461
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 20:11
Domenica, 30/09/2012
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 ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Heisenberg (Normal User)
Newbie


Messaggi: 3
Iscritto: 30/09/2012

Segnala al moderatore
Postato alle 20:39
Domenica, 30/09/2012
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!

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 21:12
Domenica, 30/09/2012
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.

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6108
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 23:12
Domenica, 30/09/2012
Io di solito uso questa:

Codice sorgente - presumibilmente VB.NET

  1. /* Handles bad input to read an integer */
  2. int read_int(){
  3.         string input;
  4.         int number = 0;
  5.  
  6.         while (true) {
  7.           getline(cin, input);
  8.  
  9.           stringstream mystream(input);
  10.           if (mystream >> number) break;
  11.           return -1; // Invalid number
  12.          }
  13.  
  14.         return number;
  15. }



Se l'input non e' un intero, ritorna -1 (ovviamente se devi leggere -1, cambialo con qualcos'altro oppure lancia un'eccezione).


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote