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

Programa que compare senha!?


danvalia

Pergunta

Tenho que fazer isso:

Escreva um programa em linguagem C que implementa um jogo que fornece dicas ao jogador para adivinhar uma senha de 5 dígitos distintos passada como entrada.

Regras do jogo:

A senha a ser adivinhada deve ser passada como entrada e conter 5 dígitos distintos entre 0 e 9.

Após a leitura da senha, o programa deve imprimir 50 linhas em branco para "ocultar" a senha digitada no terminal usando o código abaixo.

int j;
for(j = 0; j < 50; j++)
printf("\n");
A partir de então, o programa faz a leitura de um palpite digitado pelo usuário e faz os testes descritos abaixo *se o i-esimo dígito do palpite for igual ao i-ésimo dígito da senha, imprimi-se um 'x' *senão, mas se esse dígito do palpite aparece na senha em outra posição diferente de i, imprimi-se um 'o' *caso o dígito não exista na senha, nada é impresso e passa-se para o próximo dígito do palpite. Isso deve se repetir até que o palpite seja igual a senha, ou seja, todos os 5 dígitos são corretos e estão na mesma posição que na senha. Quando a senha for descoberta imprimi-se "PARABENS!Voce encontrou a senha!" Exemplo de execução: 12345 (50 linhas em branco) 12754 xxoo 12643 xxxo 12349 xxxx 12345 xxxxx PARABENS!Voce encontrou a senha! Observações gerais: Para mais exemplos olhar os testes. O nome do arquivo submetido deve ser senha.c Fazer o algoritmo antes de programar. Lembre-se de indentar seu código, e o faça enquanto escreve o código. Escolha apropriadamente os nomes das variáveis. Comente adequadamente seu código (escreva comentários para facilitar a leitura do código - evite comentar o óbvio). Escreva sempre um cabeçalho (como comentário) no seu código. Não submeta seu código sem testar antes. O número máximo de submissões é 10. A entrada deve receber um inteiro de 5 dígitos distintos. Estes dígitos devem ser lidos separadamente e colocados nas respectivas posições de um vetor de inteiros. Os textos de saída devem ser escritos sem acento, exatamente no seguinte formato: o, x, PARABENS!Voce encontrou a senha!. Testaremos o programa utilizando senhas válidas, portanto seu programa não precisará checar se a senha e os palpites estão no formato correto. Fiz esse codigo aqui:
#include <stdio.h>

main() {
  char strsenha[6], strpalpite[6],strresposta[6];
  int i,y,a,b,c;

  scanf("%s", strsenha);
  
  
    int j;
    for(j = 0; j < 50; j++)
    printf("\n");
  
    scanf("%s",&strpalpite[0],&strpalpite[1],&strpalpite[2],&strpalpite[3],&strpalpite[4]);



    for(y = 0; y <=4; y++)
    {
        if(strsenha[y] == strpalpite[y])
        strresposta[y]='x';
    }
    
    
    
    for (y=0;y<=4; y++);
    {
        if ((strpalpite[y]==strresposta[0]) || (strpalpite[y] == strresposta[1]) || (strpalpite[y]==strresposta[2]) || (strpalpite[y]==strresposta[3]) || (strpalpite[y]==strresposta[4]))
        {
        strresposta[y]='o';
        }
    
        else
        {
        strresposta[y]=' ';
        }
        }
        
    
    for (y=0;y<=4; y++);
    {
    printf("%c", strresposta[i]);
    }

  
  
       return 0;
}

alguém pode me ajudar?

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

fiz isso aqui e não ta dando como eu esperava quando executo. alguém pode dar uma olhada?

obrigado!

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


main() {
    char strsenha[5], strpalpite[5],strresposta[5],z;
    int y,j;

    
    

    scanf("%s", strsenha);


    for(j = 0; j < 50; j++)
        printf("\n");

    
    scanf("%s", strpalpite);


    
    for(y = 0; y <=4; y++)
    {
        if(strsenha[y] == strpalpite[y])
            {
            strresposta[y]='x';
            }
        if (((strpalpite[y] == strsenha[0]) || (strpalpite[y] == strsenha[1]) || (strpalpite[y] == strsenha[2]) || (strpalpite[y] == strsenha[3]) || (strpalpite[y] == strsenha[4])) && strresposta[y] != 'x')
        {
                strresposta[y]='o';
        }
        if ((((strpalpite[y] != strsenha[0]) || (strpalpite[y] != strsenha[1]) || (strpalpite[y] != strsenha[2]) || (strpalpite[y] != strsenha[3]) || (strpalpite[y] != strsenha[4])) && strresposta[y] != 'x') && strresposta[y] != 'o')
      {
         strresposta[y] = '';
      }
    }



/*    while (strpalpite != strsenha)
    */


    for (y = 0; strresposta[y]; y++) 
        {
            printf("%c", strresposta[y]);
          }
    


/*    if (strsenha==strpalpite)
    {
    printf("PARABENS!Voce encontrou a senha!");
    }
*/





system("pause");



    return 0;
    
    
}

Link para o comentário
Compartilhar em outros sites

  • 0

vamos começar com parte

char strsenha[5], strpalpite[5],strresposta[5],z;

isso acredito que teria que ser em int (mais caso queria colocar como char para 'caracter' tudo bem)

caso use int faz assim

if(strsenha == strpalpite)
ou 
if(strsenha == 123456)
lembrando caso isso seja int no seu caso e char
if(strcmp(strsenha, 123456))
ou
if(strcmp(strsenha, strpalpite))
lembrando caso isso seja char que e seu caso aviso: caso não necessite de caracter a senha use o famoso int para ter mas avanço do programa mais duvidas so postas @edit fiz um pequeno codigo para te mostrar como pode ser feito
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

int main()
{
 int senha_int;
 char senha_char[50];
 char senha_atual[50] = "123";
  
 printf("digite o valor da senha_int\n");
 scanf("%d", &senha_int);

 printf("digite o valor da senha_char\n");
 scanf("%s", senha_char);

 // olha a forma que eu usei para o int
 if(senha_int == 123456)
 {
  printf("senha_int correta\n");
 }
 else
 {
  printf("senha_int incorreta\n");
 }

 if(strcmp(senha_char, senha_atual) == 0)
 {
  printf("senha_char correta\n");
 }
 else
 {
  printf("senha_char incorreta\n");
 }

 getch();
 getch();
 return 0;
}

compilado em dev c++ (dev c++ da PDJ)

duvida poste ^^

Editado por ce1o2e
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,4k
×
×
  • Criar Novo...