Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Meu programa está lendo o mesmo scanf 2 vezes estando ele fora de loop

Boa tarde galera, tenho o seguinte problema: scanf pedindo o valor da mesma variavel 2 vezes. Tenho programado/compilado pelo CodeBlocks, usei o editor de texto Atom pra fazer o programa e tambem compilei pelo cmd, mas o resultado é o mesmo, não exibe mensagem de erro algum, mas é nitido que há algo de errado. Não encontrei a solução pelo amado google depois de um tempo significativo de pesquisa, então vim aqui pedir ajuda.. Eis o programa: Em C

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


int main(){

 printf("                    ***************************************\n");
 printf("                    ** Bem-vindo ao Jogo da Adivinhacao!!**\n");
 printf("                    ***************************************\n\n");


srand(time(0));
int numerosecreto = rand() % 100;

printf("                              Numero secreto: %d\n\n", numerosecreto);

int dificuldade;
int ntentativas;
int acertou = 0;

printf("       Escolha o nivel de dificuldade: (1) Facil (2) Medio (3) Dificil: ");
scanf("%d\n", &dificuldade);   // está esperando a resposta 2 vezes, onde a primeira resposta é guardada e a segunda conta como chute,de forma a aparecer com atrasado nas respostas do "seu chute:"

if(dificuldade == 1){
      ntentativas = 20;
}else if(dificuldade == 2){
      ntentativas = 15;
}else{
      ntentativas = 6;
}
  printf("  Dificuldade: %d\n\n", dificuldade);

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


printf("                          Tentativa: %d\n", i);

int chute;

printf("                          Qual eh o seu chute: ");
  scanf("%d\n" , &chute);

printf("                        Seu chute: %d\n\n" , chute);   // está repetindo o penultimo valor inserido e não o chute atual.

 int maior = (chute > numerosecreto);

  if(chute < 0){
printf("  O seu chute nao pode ser um numero negativo, tente um positivo!\n\n");
i--;
}

if(chute == numerosecreto){
    acertou = 1;
    break;
} else if(maior){
    printf("            O seu chute eh maior que o Numero Secreto!\n\n");
} else {
    printf("            O seu chute eh menor que o Numero Secreto!\n\n");
}
}

if(acertou){
     printf("                       Parabens Voce Venceu!!\n");
     printf("                       Volte mais vezes!!\n\n");
}else{
     printf("                       Voce perdeu essa, tente novamente!\n\n");
}
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas
solução!

Boa noite, Rodrigo. Acredito que o problema pode estar ocorrendo por conta do "\n" dentro do scanf. Geralmente, quando eu coloco o \n dentro dele, dá esse mesmo problema, ele pula a linha e parece que espera algo ser inserido. Recomendo retira-lo. O "\n" é o caractér que simboliza a quebra de linha, basicamente a função do ENTER no teclado, acho que faz mais sentido usá-lo apenas dentro dos printf's. Espero tê-lo ajudado =D

Boa noite, Douglas, acabei de ver aqui e era exatamente esse o problema, muito obrigado, agora minha mente está em paz vlw msm!!