PDA

Visualizza la versione completa : [C++] Stampa dei numeri precedenti a un valore inserito e controllo validitÓ


Heisenberg
30-09-2012, 03:23
Allora ho implementato un codice, dopo alcune pene, che mi stampi tutti i numeri primi precedenti ad un certo numero arbitrario da inserire. Per˛ vorrei sapere innanzitutto come posso fare per impedire al programma di terminare, e che quindi alla fine mi richieda "vuoi inserire un altro numero?" ed in secondo luogo, come impedire che se inserisco della spazzatura "ad esempio come "asd" o "la vispa teresa" o "55rt" o "0.003" ) il programma non vada in crash, ma mi getti fuori una frase del tipo "hai inserito dello schifo, riprova".

Ecco il codice:


#include <iostream>
#include <stdlib.h>
#include <iomanip>

using namespace std;
bool Premiere(int n) {

if (n <=0) return false;
if (n <= 2) return true;
if (n % 2 == 0) return false;
for (int i = 3; i < n/2; i = i + 2)
if (n % i == 0) return false;
return true;
};
int main() {
int z;
do {
cout << "Fino a che numero vuoi che ti trovi i numeri primi? ";
cin >> z;
}
while (z <= 0);
for (int i = 2; i <= z; i++)
if (Premiere(i))
cout << setw(3) << i;
else cout << setw(3) << (i%20==0 ? '\n' : ' ' );

return 0;
};

Grazie a tutti!!!

c0der
30-09-2012, 03:33
Guarda l'ultimo esempio a fondo pagina qui, dovrebbe andarti bene:
http://stackoverflow.com/questions/545907/what-is-the-best-way-to-do-input-validation-in-c-with-cin

No, come non detto aspetta.

Ecco: http://www.cplusplus.com/forum/beginner/17916/ l'ultimo esempio, quello con con la funzione strIsNumber e una pi¨ semplice fgets.

Poi magari si fa anche con cin, io non lo so fare, dovrei documentarmi.

Ciao.

oregon
30-09-2012, 09:39
Per ripetere il programma a richiesta, inserisci la chiamata della funzione nel main in un ciclo e controlla il ciclo con il risultato della domanda (s/n) ...

Giacoomo
30-09-2012, 11:49
Ciao a tutti, sono nuiovo in questo forum e non riesco a capire da dove posso postare una domanda. qualcuno di voi potrebbe indicarmi come fare? Grazie

Scara95
30-09-2012, 11:53
Originariamente inviato da Giacoomo
Ciao a tutti, sono nuiovo in questo forum e non riesco a capire da dove posso postare una domanda. qualcuno di voi potrebbe indicarmi come fare? Grazie
C'Ŕ un'enorme tasto giallo con scritto Nuovo Messaggio...

LeleFT
01-10-2012, 10:59
@Giacoomo: hai un messaggio privato con le indicazioni del caso.
Per questo tipo di domande, manda un PVT (messaggio privato) ad uno dei moderatori di sezione.

Fine OT, torniamo in topic.

Ciao. :ciauz:

alka
03-10-2012, 10:55
Originariamente inviato da Heisenberg
[C++] Piccolo aiutino per una domanda banale

Per favore, usa titoli pi¨ significativi per le discussioni in futuro, che diano un'idea del problema trattato (vedi la mia correzione a questa discussione per uno spunto).

Loading