Terno

di il
15 risposte

Terno

Un giocatore ha scelto 3 numeri della tombola (numeri da 1 a 90) chiedendoli in input; il programma deve indicare quante estrazioni casuali si è completato il terno. Il programma si chiude all' estrazione del terzo numero. (si ipotizzi per semplicità che i numeri estratti possano ripetersi)

ecco come inizialmente ho pensato

#include <iostream>
#include <ctime>
using namespace std;

int main()
{
int x,y,z;
int i,n;
do
{
cout<<"inserisci il primo numero"<<endl;
cin>>x;
}while(x<=0||x>90);
do
{
cout<<"inserisci il secondo numero "<<endl;
cin>>y;

}while(x<=0||x<90);
do
{
cout<<"inserisci il terzo numero"<<endl;
cin>>y;

}while(x<=0||x>90);
for(i=0;i<90;i++)
{
n=rand();
if(n==x)
{
cout<<"primo numero trovato"<<endl;
}
}
return 0;
}


poi come faccio a concludere?

15 Risposte

  • Re: Terno

    Ciao, utilizza il tag CODE per il codice, altrimenti non si capisce nulla. Comubnque a cosa servirebbero quei cicli while?
  • Re: Terno

    Controllo sugli ingressi, fra 0 e 90
  • Re: Terno

    #include <iostream>
    #include <ctime>
    using namespace std;
    
    int main() 
    {
    	int x,y,z;
    	int i,n,m,s;
    	int conto;
    	do
    	{
    		cout<<"inserisci il primo numero"<<endl;
    		cin>>x;
    	}while(x<=0||x>90);
    	do
    	{
    		cout<<"inserisci il secondo numero "<<endl;
    		cin>>y;		
    		
    	}while(x<=0||x>90);
    	do
    	{
    		cout<<"inserisci il terzo numero"<<endl;
    		cin>>y;		
    		
    	}while(x<=0||x>90);	
    	do{
    	n=rand()%90+1;
    	m=rand()%90+1;
    	s=rand()%90+1;
    	conto++;
    	} while(x!=m && x!=n && x!=s || y!=n && y!=m && y!=s||z!=m && z!=n && z!=s);
    	cout<< "terno"<<endl;
    
    return 0;
    	return 0;
    }
  • Re: Terno

    Avevo pensato di agire così
  • Re: Terno

    Intanto, quando inserisci il codice nel forum devi usare i tag CODE.

    Comunque, quel codice ha parecchi problemi.

    Per l'input utilizza un vettore di 3 elementi e un ciclo for.

    Per l'estrazione, non devi fare un ciclo da 1 a 90, non ha senso.
    Il ciclo deve essere controllato dal totale dei numeri estratti con successo e deve terminare quando questo totale è a 3.

    Inoltre il valore rand() che generi non è compreso tra 1 e 90. Rivedi la formula.
  • Re: Terno

    Gabry1984 ha scritto:


    Controllo sugli ingressi, fra 0 e 90
    Diciamo che ci sono parecchi errori, intanto devi utilizzare la libreria <cstdlib>, poi tu devi far in modo che l'utente non inserisca i numeri che non sono compresi tra 1 e 90 quindi devi utilizzare un
    if(x>0 && x<=90)
    . Poi per controllare quante estrazioni casuali ti servono devi utilizzare un contatore che viene incremnetato ogni volta che non viene estratto il numero. Prova adesso a scrivere il codice con queste indicazioni.
  • Re: Terno

    #include <iostream>
    #include <cstdlib.h>
    using namespace std;
    
    int main() 
    {
    	int x,y,z;
    	int i,n,m,s;
    	int conto;
    	do
    	{
    		cout<<"inserisci il primo numero"<<endl;
    		cin>>x;
    	}while(x>0&&<90);
    	do
    	{
    		cout<<"inserisci il secondo numero "<<endl;
    		cin>>y;		
    		
    	}while(x>0&&<90);
    	do
    	{
    		cout<<"inserisci il terzo numero"<<endl;
    		cin>>y;		
    		
    	}while(x>0&&<90);
    	do{
    	n=rand()%90+1;
    	m=rand()%90+1;
    	s=rand()%90+1;
    	conto++;
    	cout<< "terno"<<endl;
    	} while(x!=m && x!=n && x!=s || y!=n && y!=m && y!=s||z!=m && z!=n && z!=s);
    
    
    return 0;
    	return 0;
    }
  • Re: Terno

    Cosi
  • Re: Terno

    Non usi un arraycime ti ho suggerito... anzi non usi neanche z...

    Leggi le risposte...
  • Re: Terno

    Gabry1984 ha scritto:


    #include <iostream>
    #include <cstdlib.h>
    using namespace std;
    
    int main() 
    {
    	int x,y,z;
    	int i,n,m,s;
    	int conto;
    	do
    	{
    		cout<<"inserisci il primo numero"<<endl;
    		cin>>x;
    	}while(x>0&&<90);
    	do
    	{
    		cout<<"inserisci il secondo numero "<<endl;
    		cin>>y;		
    		
    	}while(x>0&&<90);
    	do
    	{
    		cout<<"inserisci il terzo numero"<<endl;
    		cin>>y;		
    		
    	}while(x>0&&<90);
    	do{
    	n=rand()%90+1;
    	m=rand()%90+1;
    	s=rand()%90+1;
    	conto++;
    	cout<< "terno"<<endl;
    	} while(x!=m && x!=n && x!=s || y!=n && y!=m && y!=s||z!=m && z!=n && z!=s);
    
    
    return 0;
    	return 0;
    }
    Perché insisti con questo while per il controllo dei numeri scelti? Il while lo devi utilizzare solo quando devi contare i numeri estratti!
  • Re: Terno

    Con quel while intende controllare che l'utente inserisca un numero valido della tombola... solo che è sbagliato e dovrebbe essere

    while (x<1 || x>90);

    e ovviamente ripetuto con y e z nelle altre while ...
  • Re: Terno

    oregon ha scritto:


    Con quel while intende controllare che l'utente inserisca un numero valido della tombola... solo che è sbagliato e dovrebbe essere

    while (x<1 || x>90);

    e ovviamente ripetuto con y e z nelle altre while ...
    Perché non usare un if così da impedire direttamente di inserire un numero non valido?
  • Re: Terno

    Perché se inserisci un numero non valido poi lo devi chiedere nuovamente all'utente ...
  • Re: Terno

    oregon ha scritto:


    Perché se inserisci un numero non valido poi lo devi chiedere nuovamente all'utente ...
    Beh si.. Io pensavo direttamente di chiudere il programma con il valore non valido, ma effettivamente così è meglio.
Devi accedere o registrarti per scrivere nel forum
15 risposte