Programma C++ che stampi multipli di 5

di il
7 risposte

Programma C++ che stampi multipli di 5

Ciao a tutti, sono nuovo sul sito..
Cerco qualche buon anima con un pò di pazienza che mi dica dove sbaglio in questa esercitazione affidatami all'università
il problema è il seguente:
Scrivere un programma C++ che, lettada input una sequenza di numeri interi terminata dal tappo (o valore sentinella)5 stampi la stringa
“NESSUNO” se nella sequenza non è presente alcun numero che sia un multiplo di 5 e la stringa “ALMENO 1” altrimenti.
ESEMPI:
se la sequenza in input fosse -3 42 37 28 5, il programma dovrebbe stampare “NESSUNO”, poiché nessuno dei numeri introdotti da input è multiplo di 5 (si noti che il tappo non va preso in considerazione per la verifica della proprietà) se la sequenza in input fosse -3 40 37 28 5, il programma dovrebbe stampare “ALMENO 1”, poiché è presente il 40 che è un multiplo di 5. se la sequenza in input fosse 5 (ossia, sequenza vuota) , il programma dovrebbe stampare “NESSUNO”,

Questo è il problema e questo è il codice che ho inserito.. cosa sbaglio?
#include <iostream>
using namespace std;
int main ()
{
int N;
cin>>N;
if (N==5)
{
cout<<"NESSUNO";
}
while (N!=5)
{
cin>>N;
if (N%5)
{
cout<<"ALMENO1";
}
else
{
cout<<"NESSUNO";
}
}
return 0;
}
così l'esercizio da errore, in cosa sbaglio?

7 Risposte

  • Re: Programma C++ che stampi multipli di 5

    Ciao,il problema è che tu stampi "NESSUNO" o "ALMENO 1" in corrispondenza di ciascun elemento inserito.
    La stampa dovrebbe avvenire alla fine, dopo l'uscita dal ciclo, ovvero dopo l'inserimento del valore 5.
    Il trucco è di tenersi traccia, in una variabile locale, se è stato inserito o meno un valore multiplo di 5.
  • Re: Programma C++ che stampi multipli di 5

    Quindi il problema risiede nel cout che metto dentro il while?
    in poche parole se mando in stampa fuori dal ciclo e usando un boolean risolvo..
  • Re: Programma C++ che stampi multipli di 5

    Esatto. Ma impieghi meno tempo a provarlo che a chiederlo !
  • Re: Programma C++ che stampi multipli di 5

    JokerJ ha scritto:


    quindi il problema risiede nel cout che metto dentro il while?
    in poche parole se mando in stampa fuori dal ciclo e usando un boolean risolvo..
    Ciao, ti conviene usare la struttura do-while in questo modo:
    
    do
    {
    	cin >> n;
    
    	if (n%5 == 0 && n != 5) c = true;
    }
    while (n != 5);
    
    Se inserisci una sequenza di numeri, attraverso questo ciclo ciascun numero viene salvato nella variabile n, dopodiché si controlla che sia multiplo di 5 (escludendo il 5 che è il valore terminale): se il numero è multiplo di 5 la variabile c diventa true. Tutto questo avverrà finché n non sarà uguale a 5 (il valore terminale). Adesso come proseguiresti l'esercizio?
  • Re: Programma C++ che stampi multipli di 5

    Alla fine ho eseguito con i bloean così
    #include <iostream>
    using namespace std;
    int main ()
    {
    int N;
    cin>>N;
    bool x=false;
    while (N!=5)
    {
    if (N%5==0)
    x=true;
    cin>>N;
    }
    if (x)
    {
    cout<<"ALMENO 1";
    }
    else
    {
    cout<<"NESSUNO";
    }
    return 0;
    }
    dovrebbe funzionare?
    non posso usare la struttura do-while poiché è un esercizio che non prevede l'utilizzo di tale forma.. in poche parole la prof. ci fa usare solo ciò che ha spiegato e do-while non è stato spiegato
  • Re: Programma C++ che stampi multipli di 5

    JokerJ ha scritto:


    alla fine ho eseguito con i bloean così
    #include <iostream>
    using namespace std;
    int main ()
    {
    int N;
    cin>>N;
    bool x=false;
    while (N!=5)
    {
    if (N%5==0)
    x=true;
    cin>>N;
    }
    if (x)
    {
    cout<<"ALMENO 1";
    }
    else
    {
    cout<<"NESSUNO";
    }
    return 0;
    }
    dovrebbe funzionare?
    non posso usare la struttura do-while poiché è un esercizio che non prevede l'utilizzo di tale forma.. in poche parole la prof. ci fa usare solo ciò che ha spiegato e do-while non è stato spiegato
    L'ho testato e sembra funzionante.
  • Re: Programma C++ che stampi multipli di 5

    Grazie tante
Devi accedere o registrarti per scrivere nel forum
7 risposte