Jump to content

Concepção do programa Mastermind


Recommended Posts

Posted

oi peço ajuda na concepção em linguagem c e em pseudo código do jogo mastermind, o programa em c e em pseudo código tem d ser ou com matrizes ou com filas, mas gostava antes k fosse com matrizes pk filas n percebo mt  👍 .Agradeço mt td a ajuda possivel. Mt obrigada

eu já fiz isto mas dá m erros estruturais alguem m pd ajudar, o problema é k eu n sei ond estão os erros n faço a mínima iedia msm, já corri o rpograma d abixo a cima e nd :S?

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int tentativas,flag2,contador,f,flag,i,j,o,k,l,lenghtcountaux[3],lenghtcountmat[3];
    char car[2],mat[3][99],aux[3][99];
  //leitura da chave
  printf("Digite a chave de 6 cores separada por espacos: ");
  for(i=0;i<=5;i++)
  {
      j=0;
      do
      {
       car[1]=getchar();
       mat[i][j]=car[1];
       j++;
      }while(car[1]!=' ' && car[1]!='\n');
      lenghtcountmat[i]=j-1;
  }
  f=0;
  tentativas=0;
  do
  {
      contador=0;
      tentativas++;
      //leitura da tentativa
    printf("Digite a sequencia de 6 cores: ");
    for(i=0;i<=5;i++)
    {
      j=0;
      do
      {
       car[1]=getchar();
       aux[i][j]=car[1];
       j++;
      }while(car[1]!=' ' && car[1]!='\n');
      lenghtcountaux[i]=j-1;
    }
    //verificar se corresponde
    for(i=0;i<=5;i++)
    {
        //se os tamanhos das palavras nao corresponderem nao vale a pena compara-las
        flag=0;
        if (lenghtcountmat[i]==lenghtcountaux[i])
        {
           for(k=0;k<=lenghtcountmat[i]-1;k++)
           {
               
               if (mat[i][k]!=aux[i][k])
               {
                  k=lenghtcountmat[i];
                  flag=1;
               }
           }
        }else {flag=1;}
        //se forem iguais a flag esta a 0 entao tem d imprimir que esta no sitio certo
        if (flag==0 && lenghtcountmat[i]==lenghtcountaux[i])
        {
           for(l=0;l<=lenghtcountmat[i]-1;l++)
           {
               printf("%c", mat[i][l]);
           }
           printf(" esta no sitio correcto\n");
           contador++;
        }
        //se os tamanhos forem difrentes ou se as palavras tambem forem vai testar com todas as outras palavras
        if (flag==1)
        {
           for(o=0;o<=5;o++)
           {
              if (lenghtcountmat[o]==lenghtcountaux[i])
              {
                 flag=0;
                 for(k=0;k<=lenghtcountmat[o]-1;k++)
                 {
                    
                    if (mat[o][k]!=aux[i][k])
                    {
                       flag2=1;
                       flag=1;
                    }
                 }
                 if (flag==0)
                 {        
                    for(l=0;l<=lenghtcountaux[i]-1;l++)
                    {
                        printf("%c", aux[i][l]);
                    }
                    printf(" existe noutra posicao\n");
                    flag2=0;
                    o=3;
                 }
              }else if (lenghtcountmat[o]!=lenghtcountaux[i])
              {
                    flag2=1;
              }
           }
        }
        if (flag2==1)
        {
              for(l=0;l<=lenghtcountaux[i]-1;l++)
              {
                   printf("%c", aux[i][l]);
               }
               printf(" nao existe\n");
               flag2=0;
        }
    }                  
  }while (contador!=6);
  printf("PARABENS!! Numero de tentativas %d",tentativas);
  system("PAUSE");	
  return 0;
}
Posted

Começas por gerar n (número de bolas) números aleatórios.

De seguida, les k tentativas do utilizador.

Para cada tentativa, tens que dar a resposta correcta (antes do utilizador inserir a tentativa seguinte)

A resposta correcta é dada em função do número de números certos, na posição correcta, e de números correctos, mas em posição errada.

Só não estou a perceber para que serve a matriz, visto o MasterMind se basear num só vector.. A menos que queiras guardar as tentativas anteriores.

Posted

A repetição d cores, o numero d cores, a dimensão da chave e o tal maximo d tentativas devem ser definidos á priori pelo utilizador.o computador deve gerar aleatoriamente a uma chave com n cores(representadas com letras), d um conjunto d M cores possiveis.Deverá ser possivel definir chaves com cores(letras) repetidas. O programa deverá ser implementado atraves d vectores bidimensionais alocados dinamicamente d acordo com a dimensão do tabuleiro.

Posted

Era escusado criar 2 tópicos não?

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Posted

oi peço ajuda na concepção em linguagem c e em pseudo código do jogo mastermind, o programa em c e em pseudo código tem d ser ou com matrizes ou com filas, mas gostava antes k fosse com matrizes pk filas n percebo mt  😄 .Agradeço mt td a ajuda possivel. Mt obrigada

eu já fiz isto mas dá m erros estruturais alguem m pd ajudar, o problema é k eu n sei ond estão os erros n faço a mínima iedia msm, já corri o rpograma d abixo a cima e nd :S?

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int tentativas,flag2,contador,f,flag,i,j,o,k,l,lenghtcountaux[3],lenghtcountmat[3];
    char car[2],mat[3][99],aux[3][99];
  //leitura da chave
  printf("Digite a chave de 6 cores separada por espacos: ");
  for(i=0;i<=5;i++)
  {
      j=0;
      do
      {
       car[1]=getchar();
       mat[i][j]=car[1];
       j++;
      }while(car[1]!=' ' && car[1]!='\n');
      lenghtcountmat[i]=j-1;
  }
  f=0;
  tentativas=0;
  do
  {
      contador=0;
      tentativas++;
      //leitura da tentativa
    printf("Digite a sequencia de 6 cores: ");
    for(i=0;i<=5;i++)
    {
      j=0;
      do
      {
       car[1]=getchar();
       aux[i][j]=car[1];
       j++;
      }while(car[1]!=' ' && car[1]!='\n');
      lenghtcountaux[i]=j-1;
    }
    //verificar se corresponde
    for(i=0;i<=5;i++)
    {
        //se os tamanhos das palavras nao corresponderem nao vale a pena compara-las
        flag=0;
        if (lenghtcountmat[i]==lenghtcountaux[i])
        {
           for(k=0;k<=lenghtcountmat[i]-1;k++)
           {
               
               if (mat[i][k]!=aux[i][k])
               {
                  k=lenghtcountmat[i];
                  flag=1;
               }
           }
        }else {flag=1;}
        //se forem iguais a flag esta a 0 entao tem d imprimir que esta no sitio certo
        if (flag==0 && lenghtcountmat[i]==lenghtcountaux[i])
        {
           for(l=0;l<=lenghtcountmat[i]-1;l++)
           {
               printf("%c", mat[i][l]);
           }
           printf(" esta no sitio correcto\n");
           contador++;
        }
        //se os tamanhos forem difrentes ou se as palavras tambem forem vai testar com todas as outras palavras
        if (flag==1)
        {
           for(o=0;o<=5;o++)
           {
              if (lenghtcountmat[o]==lenghtcountaux[i])
              {
                 flag=0;
                 for(k=0;k<=lenghtcountmat[o]-1;k++)
                 {
                    
                    if (mat[o][k]!=aux[i][k])
                    {
                       flag2=1;
                       flag=1;
                    }
                 }
                 if (flag==0)
                 {        
                    for(l=0;l<=lenghtcountaux[i]-1;l++)
                    {
                        printf("%c", aux[i][l]);
                    }
                    printf(" existe noutra posicao\n");
                    flag2=0;
                    o=3;
                 }
              }else if (lenghtcountmat[o]!=lenghtcountaux[i])
              {
                    flag2=1;
              }
           }
        }
        if (flag2==1)
        {
              for(l=0;l<=lenghtcountaux[i]-1;l++)
              {
                   printf("%c", aux[i][l]);
               }
               printf(" nao existe\n");
               flag2=0;
        }
    }                  
  }while (contador!=6);
  printf("PARABENS!! Numero de tentativas %d",tentativas);
  system("PAUSE");	
  return 0;
}
Posted

Bom, para começar podes e deves usar a ferramenta GeSHi para meteres código... fica muito mais legível, com cores e tal...

Tens apenas 2 erros mas que cometes várias vezes...

mat[j] é um char[] enquanto que car[1] é um char, logo estás a atribuir um char[] a um char, o que obviamente dá erro.

acontece mais ou menos a mesma coisa com o lengthcountmat e lengthcountaux que são ambos int[] e estás a tentar comparar com (e atribuir a) um int.

ou seja o problema é que estás a juntar alhos (array de int e array de char) e bogalhos (int e char).

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.