Ir para conteúdo
Fórum Script Brasil
  • 0

modificar este programa em c++?


HELENA LEITE

Pergunta

como modificar este programa c++ no dev?

o usuario tem que digitar 8 numeros sendo que depois que digita deve-se fazer o teste para saber se esses numeros estao contidos no vetor ult_sorteio que é o vetor que contem os 15 ultimos numeros do sorteio da lotofacil ,se o numero que o usuario digitar estiver entre os 15 o numero digitado vai fazer parte da aposta se não então esse numero não vai fazer parte da aposta ,dai então o programa segue escolhendo mais cinco numeros do vetor maior_ocorrencia e depois mais dois numeros aleatorios formando assim os 15 numeros da aposta que queremos.

#include <iostream>

using namespace std;

// programa para gerar um jogo para a Lotofacil

int main () {

system ("cls");

system ("color F0");

int i;

// loop para gerar o jogo

for (i = 1; i <= 1; i++) {

cout << "\n\n#Jogo" << i << ":""\n\n";

int numeros[15];

int ult_sorteio[15] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

int maior_ocorrencia[25] = {2, 11, 1, 19, 15, 23, 13, 4, 25, 12, 9, 21, 22, 24,

14, 17, 20, 3, 6, 10, 5, 7, 18, 16, 8};

int i, j;

int ocorrencia = 8;

int randomico;

int aux;

cout << "Digite 8 numeros (entre 1 e 25):\n";

// leitura dos 8 números

for (i = 0; i < 8; i++) {

cin >> numeros;

for (j = 0; j < i; j++){

while ((numeros) == (numeros[j])) {

cout << "Voce já digitou esse numero. Digite um numero diferente: ";

cin >> numeros ;

}

}

while ((numeros < 1) || (numeros > 25)) {

cout << "Numero invalido. Digite novamente: ";

cin >> numeros;

}

}

// escolhendo 5 numeros de maior ocorrencia

for(i = 0; i < 8; i++) {

for(j = 0; j < 25; j++) {

if(numeros == maior_ocorrencia[j]) {

maior_ocorrencia[j] = -1;

break;

}

}

}

for(i = 8; i < 13; i++) {

for(j = 0; j < 25; j++) {

if(maior_ocorrencia[j] != -1) {

numeros = maior_ocorrencia[j];

maior_ocorrencia[j] = -1;

break;

}

}

}

// escolhendo 2 numeros aleatorios

srand (time (0));

for(i = 13; i < 15; i++) {

randomico = 1 + rand() % 25;

for (j = 0; j < 15; j++) {

if(numeros[j] == randomico) {

randomico = 1 + rand() % 25;

j = 0;

}

}

numeros = randomico;

}

//saida jogos desordenados

cout << "\nNumeros digitados pelo usuario: ";

for (i = 0; i <= 7; i++) {

cout << numeros << " ";

}

cout << "\nNumeros de maior ocorrencia: ";

for (i = 8; i <= 12; i++) {

cout << numeros << " ";

}

cout << "\nNumeros gerados aleatoriamente: ";

for (i = 13; i <= 14; i++) {

cout << numeros << " ";

}

//ordenando os números em ordem crescente

for(int j = 0; j < 15; j++)

for(int i = 0; i < 14; i++)

if((numeros) > (numeros[i+1])){

aux = numeros;

numeros = numeros[i+1];

numeros[i+1] = aux;

}

// saida jogo ordenado

cout << "\n\nJogo ordenado:";

for (i = 0; i <= 14; i++) {

cout << numeros << " ";

}

}

cout << endl ;

printf("\ngood luck!");

cout << endl << endl ;

system ("PAUSE");

return (0);

}

OBS: NO INICIO DESSE PROGRAMA É PEDIDO AO USUARIO QUE ELE DIGITE OITO NUMEROS QUAISQUER ENTRE 1 E 25 O QUE DEVE SER MUDADO É QUE O OS OITO NUMEROS QUE O USUARIO DIGITAR DEVEM SER DO VETOR QUE TEM OS 15 NUMEROS DO ULTIMO SORTEIO E não QUAISQUER NUMEROS OU SEJA AO DIGITAR OITO NUMEROS O PROGRAMA VAI TER QUE TESTAR PARA SABER SE ESSES NUMEROS PERTENCEM AO VETOR ULTIMO SORTEIO,OU SEJA SE OS NUMEROS QUE O USUARIO DIGITAR não PERTENCEREM AO VETOR ULTIMO SORTEIO LOGO ELES não ENTRAM PARA O VETOR APOSTA E então VAI SER PEDIDO PARA QUE DIGITE OUTROS NUMEROS ATE QUE SE TENHAA 8 NUMEROS QUE PERTENCEM AO VETOR ULTIMO SORTEIO DAI TEREMOS 8 NUMEROS ,MAIS CINCO NUMEROS DO VETOR MAIOR OCORRENCIA ,MAIS 2 NUMEROS ALEATORIOS ,ASSIM então TEREMOS 15 NUMEROS DA APOSTA QUE VAI SER MOSTRADO NO FIM DO PROGRAMA.

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
Você que fez este programa? Qual sua dúvida? Onde você não consegue alterar?

Abraços,

Marcelo Utikawa da Fonseca

Marcelo nesse programa o que tem que ser mudado é quando o usuario digitar um numero o programa tem que testar se o numero esta num vetor que foi citado antes não estou conseguindo acessar os elementos do vetor o que tenho que fazer para comparar o numero que eu digitei com as posiçoes do numero do vetor porque se eu simplismente fizer if((numeros ) == (sorteio[j])) não esta dando certo acho que se eu comparar as posiçoes talvez de certo mas vai ficar muito longo o programa que fiz so pede oito numeros mas não compara para saber se ele esta ou não em um array já digitado essa é a minha duvida como vou comparar um array com quinze elementos com apenas numeros que digitarei.

Link para o comentário
Compartilhar em outros sites

  • 0

Segue código que checa o vetor:

i = 0;
while(i < 8) {
    cin >> numeros[i];

    // Checa se repete
    for (j = 0; j < i; j++){
        if(numeros[i] == numeros[j]) {
            cout << "Voce já digitou esse numero. Digite um numero diferente: ";
            break;
        }
    }

    if(j == i) { // não repetiu
        if(numeros[i] < 1 || numeros[i] > 25) {
            cout << "Numero invalido. Digite novamente: ";
        } else { // numero entre 1 e 25
            for (j = 0; j < 15; j++) {
                if(numeros[i] == ultsorteio[j]) break;
            }

            if(j < 15) { // Saiu no break, o numero esta no vetor! Numero valido.
                i++; // Avanca para o proximo numero
            }
        }
    }
}

Essa lógica lê um número, verifica se foi repetido, verifica se está entre 1 e 25 e depois checa se está no vetor do último sorteio.

Substituia essa lógica pelo primeiro loop, onde está lendo os números do usuário.

Não testei aqui pois vou ter que sair agora, veja se funciona para você!

Qualquer coisa é só falar.

Abraços,

Marcelo Utikawa da Fonseca

Editado por Marcelo Utikawa da Fonseca
Link para o comentário
Compartilhar em outros sites

  • 0

Helena, não sei se você já resolveu seu problema, mas de qualquer forma fiz o código para esse programa. Funciona corretamente. Vou postar o código aqui no fórum:

#include <cstdlib>
#include <iostream>
#include <locale>
using namespace std;
int NumerosSorteados[15] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
 int MaiorOcorrencia[25] = {2, 11, 1, 19, 15, 23, 13, 4, 25, 12, 9, 21, 22, 24,14, 17, 20, 3, 6, 10, 5, 7, 18, 16, 8};
  int NumerosAleatorios[25] = {1, 2, 3, 4, 5, 6, 7, 8 ,9, 10, 11, 12, 13, 14, 15, 16, 17, 18 ,19, 20, 21, 22, 23, 24, 25};
struct VariaveisGlobais
{
   int NumerosdoUsuario[8];
   int NumerosIguais[8];
   int NumerosFinais[15];
}; VariaveisGlobais GlobalObj;
void Continuar();
int Sair();
void Pergunta();
void ChecarNumerosdoUsuario ();

void Pergunta()
{
     int i = 0;
    int j = 0;
      cout << "Entre 8 números entre 1 e 25, diferentes entre si.\n" << endl;
     while (i < 8)
     {
     cin >> GlobalObj.NumerosdoUsuario[i];
    for (j = 0; j < i; j++){
        if(GlobalObj.NumerosdoUsuario[i] == GlobalObj.NumerosdoUsuario[j])
        {
        cin.sync();
            cout << "\nVoce já digitou esse numero. Digite um numero diferente: " << endl;
            break;
        }
    }

    if(j == i) {
        if(GlobalObj.NumerosdoUsuario[i] < 1 || GlobalObj.NumerosdoUsuario[i] > 25) {
            cout << "\nNumero invalido. Digite novamente: " << endl;

        } else {
            for (j = 0; j < 15; j++) {
                if(GlobalObj.NumerosdoUsuario[i] == NumerosSorteados[j]) break;
            }

            if(j < 15) {
                i++;
            }
            else
            {
                 cout << "\nNúmero não está no vetor. Tente denovo." << endl;
                 cout << "\n";
                 }

        }
    }
}
     ChecarNumerosdoUsuario();
}

void ChecarNumerosdoUsuario()
{

          int temp = 0;
          int temp2 = 0;

        for (int l = 0; l < 8; l++)
        {
            GlobalObj.NumerosFinais[l] = GlobalObj.NumerosdoUsuario[l];
        }
        for (int m = 8; m < 13; m++)
        {
             srand(time(0));
             int s = m + (rand() % (25-m));
                temp = MaiorOcorrencia[m];
            MaiorOcorrencia[m] = MaiorOcorrencia[s];
            temp = MaiorOcorrencia[m];
            GlobalObj.NumerosFinais[m] = temp;
             for (int a = 0; a < m; a++)
             {
                if (GlobalObj.NumerosdoUsuario[a] == GlobalObj.NumerosFinais[m])
                {
                  GlobalObj.NumerosFinais[m] = 0;
                  m--;
                  }
                  }

                  for (int b = 0; b < m; b++)
                  {
                      if ( GlobalObj.NumerosFinais[b] == GlobalObj.NumerosFinais[m])
                      {
                      GlobalObj.NumerosFinais[m] = 0;
                      m--;
                      }
                      }
                      }
        for (int n = 13; n < 15; n++)
        {
         srand(time(0));
         int t = n + (rand() % (25-n));
          temp2 = NumerosAleatorios[n];
          NumerosAleatorios[n] = NumerosAleatorios[t];
          temp2 = NumerosAleatorios[n];
          GlobalObj.NumerosFinais[n] = temp2;
           for (int a = 0; a < n; a++)
             {
                if (GlobalObj.NumerosdoUsuario[a] == GlobalObj.NumerosFinais[n])
                {
                  GlobalObj.NumerosFinais[n] = 0;
                  n--;
                  }
                  }
                  for (int b = 0; b < n; b++)
                  {
                      if ( GlobalObj.NumerosFinais[b] == GlobalObj.NumerosFinais[n])
                      {
                      GlobalObj.NumerosFinais[n] = 0;
                      n--;
                      }
                      }
                      }

cout << "\nEsses são os números do seu sorteio:\n" << endl;
cout << "\n";
cin.sync();
for (int n = 0; n < 14; n++)
{
for (int o = 0; o < 14; o++)
{

    if ( GlobalObj.NumerosFinais[o] > GlobalObj.NumerosFinais[o+1])
    {
      int temp = GlobalObj.NumerosFinais[o];
      GlobalObj.NumerosFinais[o] = GlobalObj.NumerosFinais[o+1];
      GlobalObj.NumerosFinais[o+1] = temp;
    }
}
}
for (int p = 0; p < 15; p++)
{
      cout << GlobalObj.NumerosFinais[p] << " ";
}
cout << "\n\n";
Sair();
}


void Continuar()// Função utilizada para saber se o usuário deseja continuar usando o programa
{
     char Opcao = '';

     cout << "Deseja continuar usando o programa?(S/N)\n" << endl;
     cin >> Opcao;
     cout << "\n\n" << endl;
     cin.sync();
     switch(Opcao)
     {
     case 'S': { system("cls"); Pergunta(); break; }
     case 's': { system("cls"); Pergunta(); break; }
     case 'N': { Sair(); break; }
     case 'n': { Sair(); break; }
     default : { Sair(); break; }
}
}
int Sair()// Função usada para fechar o programa. Criei ela separadamente por questões de organização e praticidade para o switch.
{
   cout << "Adeus!" << endl;
   cin.get();
   return 0;
}

int main()
{
    setlocale(LC_ALL, "Portuguese");
    Pergunta();
    return 0;
}

Att.,

Pedro

Editado por PedroCunha
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...