[C++] Ragazzi ho bisogno per questo codice (facile)

di Anonimizzato11104 il
3 risposte
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!!!

3 Risposte

  • Se non ho capito male vuoi ripetere il codice all'infinito finché non premi un tasto?

    Allora per fare ciò puoi usare il ciclo for in questo modo.

    for(; ; ) {

    }

    Questo va messo dopo l'inserimento delle variabili e tra le graffe tutto il codice che verrà ripetuto finchè non si preme CTRL+C.
    IMPORTANTE: dato che il codice si ripete, conviene che all'inizio del ciclo azzeri tutte le variabile, altrimenti il programma potrebbe non funzionare
  • Ciao, io ho dato un'interpretazione diversa rispetto a frankekko.
    Tu chiedi che non termini una volta raggiunto il numero che hai inserito? Io farei così, prima del return inserirei:
    
    cout <<"Vuoi inserire altri numeri?(yes/no)" <<endl;
    cin >>risposta;
    if(risposta=="yes"){
               cout<<"ottimo, digita il nuovo limite superiore"<<endl;
               //qua ridigiti con il cin il numero da raggiungere e reiteri il processo
    }
    if(risposta=="no") return 0;
    
    
    In questo caso risposta è una std::string, la devi dichiarare all'inizio.

    Non so se ho interpretato bene la tua richiesta, speriamo
  • Invece per quanto riguarda la validazione dell'input ti scrivo 4 righe di codice in C, il c++ non lo conosco, però magari ti sono di aiuto:
    
    do
    {
         printf("Inserisci valore");
         esito_lettura = scanf("%d", &value);
         if(esito_lettura != 1 || value <= 0)
              do
              scanf("%c",&carattere_non_letto);
              while(carattere_non_letto != '\n');
    }while (esito_lettura != 1 || value <=0);
    
Devi accedere o registrarti per scrivere nel forum
3 risposte