Boa noite. Gostaria que me ajudassem a corrigir este algoritmo. Tenho de fazer um programa que simule o euromilhões e ainda verificar quantos números acertei e atribuir prémios respetivos. Não consigo não deixar o utilizador introduzir números repetidos. Além disso os contadores parecem não estar a funcionar corretamente.
O algoritmo é o seguinte:
#include <iostream>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
using namespace std;
int z;
int y;
int numeros[5];
int i;
int estrelas[2];
int c;
int w,u;
int contador=0;
int contador2=0;
void chave_aleatoria(int numeros_chave[])
{
srand(time(NULL));
cout << "os numeros são"<<endl;
for(z=0;z<5;z++)
{
numeros_chave[z]= 1+rand() % 50;
cout << numeros_chave[z] << endl;
if (numeros==numeros_chave[z]) { contador++; } } } void chave_aleatoria2(int estrelas_chave[]) { srand(time(NULL));//não pode repetir; não sei como fazer cout << "as estrelas são"<<endl; for(y=0;y<2;y++) { estrelas_chave[y]= 1+rand() % 12; cout << estrelas_chave[y] << endl; if (estrelas[c]==estrelas_chave[y]) { contador2++; } } } int main() { int vetor[50]; for (i=0;i<5;i++) { do { cout << "Introduza um numero "<< endl; cin >> numeros; } while (numeros<1 || numeros>50 || numeros==numeros[i-1]); } int vetor2[12]; for (c=0;c<2;c++) { do { cout << "Introduza uma estrela " << endl; cin >> estrelas[c]; } while (estrelas[c]<1 || estrelas[c]>12 || estrelas[c]==estrelas[c-1]); } int numeros_chave[5]; chave_aleatoria(numeros_chave); int estrelas_chave[2]; chave_aleatoria2(estrelas_chave); if (contador==2 && contador2==0) { cout << "acertou 2 numeros e por isso venceu o decimo terceiro premio"; } if (contador==2 && contador2==1) { cout << "acertou 2 numeros e 1 estrela e por isso venceu o decimo segundo premio"; } if (contador==1 && contador2==2) { cout << "acertou 1 numero e 2 estrelas e por isso venceu o decimo primeiro premio"; } if (contador==3 && contador2==0) { cout << "acertou 3 numeros e por isso venceu o decimo premio"; } if (contador==3 && contador2==1) { cout << "acertou 3 numeros e 1 estrela e por isso venceu o nono premio"; } if (contador==2 && contador2==2) { cout << "acertou 2 numeros e 2 estrelas e por isso venceu o oitavo premio"; } if (contador==4 && contador2==0) { cout << "acertou 4 numeros e por isso venceu o setimo premio"; } if (contador==3 && contador2==2) { cout << "acertou 3 numeros e 2 estrelas e por isso venceu o sexto premio"; } if (contador==4 && contador2==1) { cout << "acertou 4 numeros e 1 estrela e por isso venceu o quinto premio"; } if (contador==4 && contador2==2) { cout << "acertou 4 numeros e 2 estrelas e por isso venceu o quarto premio"; } if (contador==5 && contador2==0) { cout << "acertou 5 numeros e por isso venceu o terceiro premio"; } if (contador==5 && contador2==1) { cout << "acertou 5 numeros e 1 estrela e por isso venceu o segundo premio"; } if (contador==5 && contador2==2) { cout << "acertou 5 numeros e 2 estrelas e por isso venceu o primeiro premio"; } if (contador==0 && contador2==0) { cout << "não acertou nenhum numero nem nenhuma estrela e por isso não tem premio"; } if (contador==0 && contador2==1) { cout << "acertou apenas 1 estrela e por isso não tem premio"; } if (contador==0 && contador2==2) { cout << "acertou apenas 2 estrelas e por isso não tem premio"; } if (contador==1 && contador2==0) { cout << "acertou apenas 1 numero e por isso não tem premio"; } if (contador==1 && contador2==1) { cout << "acertou apenas 1 numero e 1 estrela e por isso não tem premio"; } cout << endl; system("pause"); }
Pergunta
Pedro Pinto
Boa noite. Gostaria que me ajudassem a corrigir este algoritmo. Tenho de fazer um programa que simule o euromilhões e ainda verificar quantos números acertei e atribuir prémios respetivos. Não consigo não deixar o utilizador introduzir números repetidos. Além disso os contadores parecem não estar a funcionar corretamente.
O algoritmo é o seguinte:
#include <iostream>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
using namespace std;
int z;
int y;
int numeros[5];
int i;
int estrelas[2];
int c;
int w,u;
int contador=0;
int contador2=0;
void chave_aleatoria(int numeros_chave[])
{
srand(time(NULL));
cout << "os numeros são"<<endl;
for(z=0;z<5;z++)
{
numeros_chave[z]= 1+rand() % 50;
cout << numeros_chave[z] << endl;
if (numeros==numeros_chave[z])
{
contador++;
}
}
}
void chave_aleatoria2(int estrelas_chave[])
{
srand(time(NULL));//não pode repetir; não sei como fazer
cout << "as estrelas são"<<endl;
for(y=0;y<2;y++)
{
estrelas_chave[y]= 1+rand() % 12;
cout << estrelas_chave[y] << endl;
if (estrelas[c]==estrelas_chave[y])
{
contador2++;
}
}
}
int main()
{
int vetor[50];
for (i=0;i<5;i++)
{
do
{
cout << "Introduza um numero "<< endl;
cin >> numeros;
}
while (numeros<1 || numeros>50 || numeros==numeros[i-1]);
}
int vetor2[12];
for (c=0;c<2;c++)
{
do
{
cout << "Introduza uma estrela " << endl;
cin >> estrelas[c];
}
while (estrelas[c]<1 || estrelas[c]>12 || estrelas[c]==estrelas[c-1]);
}
int numeros_chave[5];
chave_aleatoria(numeros_chave);
int estrelas_chave[2];
chave_aleatoria2(estrelas_chave);
if (contador==2 && contador2==0)
{
cout << "acertou 2 numeros e por isso venceu o decimo terceiro premio";
}
if (contador==2 && contador2==1)
{
cout << "acertou 2 numeros e 1 estrela e por isso venceu o decimo segundo premio";
}
if (contador==1 && contador2==2)
{
cout << "acertou 1 numero e 2 estrelas e por isso venceu o decimo primeiro premio";
}
if (contador==3 && contador2==0)
{
cout << "acertou 3 numeros e por isso venceu o decimo premio";
}
if (contador==3 && contador2==1)
{
cout << "acertou 3 numeros e 1 estrela e por isso venceu o nono premio";
}
if (contador==2 && contador2==2)
{
cout << "acertou 2 numeros e 2 estrelas e por isso venceu o oitavo premio";
}
if (contador==4 && contador2==0)
{
cout << "acertou 4 numeros e por isso venceu o setimo premio";
}
if (contador==3 && contador2==2)
{
cout << "acertou 3 numeros e 2 estrelas e por isso venceu o sexto premio";
}
if (contador==4 && contador2==1)
{
cout << "acertou 4 numeros e 1 estrela e por isso venceu o quinto premio";
}
if (contador==4 && contador2==2)
{
cout << "acertou 4 numeros e 2 estrelas e por isso venceu o quarto premio";
}
if (contador==5 && contador2==0)
{
cout << "acertou 5 numeros e por isso venceu o terceiro premio";
}
if (contador==5 && contador2==1)
{
cout << "acertou 5 numeros e 1 estrela e por isso venceu o segundo premio";
}
if (contador==5 && contador2==2)
{
cout << "acertou 5 numeros e 2 estrelas e por isso venceu o primeiro premio";
}
if (contador==0 && contador2==0)
{
cout << "não acertou nenhum numero nem nenhuma estrela e por isso não tem premio";
}
if (contador==0 && contador2==1)
{
cout << "acertou apenas 1 estrela e por isso não tem premio";
}
if (contador==0 && contador2==2)
{
cout << "acertou apenas 2 estrelas e por isso não tem premio";
}
if (contador==1 && contador2==0)
{
cout << "acertou apenas 1 numero e por isso não tem premio";
}
if (contador==1 && contador2==1)
{
cout << "acertou apenas 1 numero e 1 estrela e por isso não tem premio";
}
cout << endl;
system("pause");
}
Agradecia se me dessem uma ajuda
Abraço,
Pedro
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.