
Originariamente inviata da
MItaly
Bih, che camurria! (cit.)
Ma che mi viene a significare?
Questo è un programma C++?
codice:
#include <time.h>
#include <cstdlib>
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main(int argc, char* argv[])
{
unsigned int numeroMassimo = 90; // in un mondo-C sarebbero define e non variabili, ma pazienza
unsigned int lunghezzaEstrazione = 5;
std::vector<int> numeri_inseriti; //abbiamo pochi elementi, niente preallocazione
std::vector<int> numeri_estratti;
std::string nome;
unsigned int i,j;
unsigned int m,F,T;
// non è molto C++, ma pazienza
srand(time(NULL));
//visto che è il Potente C++ usiamo una stringa
cout<< "inserisci il tuo nome"<<endl;
cin>>nome;
cout<<"Buongiorno "<<nome<<endl;
numeri_inseriti.empty(); // superfluo, ma in generale è bene non fidarsi
for (i=1;numeri_inseriti.size()<lunghezzaEstrazione;i++)
{
do //nota: non esiste un modo semplice in C++<11 per convertire una stringa in un numero con test
//dei caratteri strani; per comodità lo lascio così, sono i casi della vita
{
cin.clear(); // purga di un po' di mondezza dei char
cout <<" inserisci il "<<numeri_inseriti.size()+1<<" numero"<<endl;
cin>>m;
} while (! ((m>=1) && (m<=numeroMassimo)) ); //qui dentro ci starebbe pure il test del doppione
if ( std::find(numeri_inseriti.begin(), numeri_inseriti.end(), m)!=numeri_inseriti.end() )
cout << " doppione "<<endl;
else
numeri_inseriti.push_back(m);
}
cout<<"***********************************"<<endl;
cout<<" Numeri inseriti: "<<endl;
// iteratore vecchio stile, non un auto C++11, ma pazienza
for (std::vector<int>::const_iterator iteratore = numeri_inseriti.begin(); iteratore!=numeri_inseriti.end(); iteratore++)
std::cout << *iteratore << std::endl;
numeri_estratti.empty(); // superfluo, ma in generale è bene non fidarsi
// questo è un misto col programma originale, ma pazienza
for (i=1;numeri_estratti.size()<lunghezzaEstrazione;i++)
{
F=rand();
T=F%90+1;
if ( std::find(numeri_estratti.begin(), numeri_estratti.end(), T)!=numeri_estratti.end() )
cout << T<<" generato doppione "<<endl;
else
numeri_estratti.push_back(T);
}
cout<<"***************************************"<<endl;
// sempre iteratore old-style; in un mondo normale nessuno farebbe così, ma questo
// è un Potente C++ e non C
cout<<"Estrazione ruota Roma: "<<endl;
for (std::vector<int>::const_iterator iteratore = numeri_estratti.begin(); iteratore!=numeri_estratti.end(); iteratore++)
std::cout << *iteratore << endl;
// ed ecco l'arcano, senza iteratore che mi son stancato le dita, per contare i match
int contatore=0;
for (i=0; i<lunghezzaEstrazione; i++)
if ( std::find(numeri_estratti.begin(), numeri_estratti.end(), numeri_inseriti[i])!=numeri_estratti.end() )
contatore++;
cout<<"***********************************"<<endl;
cout<<"hai indovinato: "<<contatore<<" numeri"<<endl;
system("PAUSE");
return 0;
}