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

di il
3 risposte

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

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

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

    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
  • Re: [C++] Ragazzi ho bisogno per questo codice (facile)

    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
  • Re: [C++] Ragazzi ho bisogno per questo codice (facile)

    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