Aircrash
-
Total de itens
5 -
Registro em
-
Última visita
Posts postados por Aircrash
-
-
Pessoal continuo desenvolvendo o menu do meu primeiro programa e depois de resolver o problema do switch agora me deparei com uma cena inusitada, vou postar o código inteiro aqui e explicar o por quê.
#include <conio.h>
#include <stdio.h>
#include <dos.h>
void main (void)
{
int modo, qtdtempo, qtdvoltas;
char nomevermelho[20];
char nomeamarelo[20];
char sim;
again:;
clrscr();
printf("****************************************************************\n");
printf(" Programa Autorama V0.5\n");
printf("****************************************************************\n");
printf("========================Menu Principal==========================\n");
printf("Digite a opção desejada:\n");
printf("(1) - Jogo por tempo\n");
printf("(2) - Jogo por voltas\n");
printf("(3) - Sair\n\n");
modo = getch();
switch (modo)
{ case '1':
printf("Quanto tempo? (Digite o tempo em minutos, mínimo 1 máximo 59)\n");
scanf("%d",&qtdtempo,"\n");
break;
case '2':
printf("Quantas voltas? (Mínimo 1 e máximo 99)\n");
scanf("%d",&qtdvoltas,"\n");
break;
case '3':
printf ("Saindo...");
delay(1000);
exit(1);
break;
default:
printf ("\nOpcao incorreta, tente novamente");
delay (1000);
goto again;
}
printf("****************************************************************\n");
printf("=======================Dados dos Jogadores======================\n");
printf("Digite o Nome do piloto do carro vermelho:\n");
scanf("%s ",&nomevermelho);
printf("\nDigite o Nome do piloto do carro amarelo:\n");
scanf("%s",&nomeamarelo);
printf("****************************************************************\n");
printf("=======================Verifique os dados=======================\n");
printf("%s pilotará o carro vermelho\n",nomevermelho);
printf("%s pilotará o carro amarelo\n",nomeamarelo);
if (modo=='1')
{
printf("Modo de jogo selecionado: Jogo por tempo\n");
printf("Vence quem tiver o maior numero de voltas no final de %d minutos\n",qtdtempo);
}
else
{
printf("Modo de jogo selecionado: Jogo por voltas\n");
printf("Vence quem atingir primeiro as %d voltas\n", qtdvoltas);
}
printf("Dados corretos? (Pressione S para sim e N para Não)\n");
sim=getch();
if (sim=='n')
{
goto again;
}
}
Bem acontece o seguinte o programa roda bem até chegar aqui
printf("Digite o Nome do piloto do carro vermelho:\n");
scanf("%s ",&nomevermelho);
printf("\nDigite o Nome do piloto do carro amarelo:\n");
scanf("%s",&nomeamarelo);
Neste momento ele mostra a mensagem do piloto do carro vermelho e pede para eu digitar algo scanf &nomeverlho funciona ok. porém após eu dar enter em vez dele me mostrar o printf nome do poiloto do carro amarelo, ele me pelo que eu digite mais alguma coisa o scanf &nomeamarelo, ai eu digito e só depois ele me mostra o printf(nome do carro amarelo).
Se eu trocar o scanf por um gets conforme abaixo
printf("Digite o Nome do piloto do carro vermelho:\n");
gets(nomevermelho);
printf("\nDigite o Nome do piloto do carro amarelo:\n");
gets(nomeamarelo);
Ele me mostra os dois printf e pede para eu digitar alguma coisa eu digito e isto é armazenado na nomeamarelo, porém ele nem sequer pede a do nomevermelho.
Já quebrei a cabeça e não consegui entender o problema
OBS: Sei que não se deve postar o código inteiro, mas postei porque se eu pegar apenas o pedaço citado e compilar um programa a desgraça funciona normalmente, só não funciona quando fica dentro deste código.
Será que alguém me ajuda?
-
Fressato uma palavra sua matou meu problema "caracter" eu tava levando em consideração que os caracteres 1,2,3 era numerais ou seja inteiros, por isso o scanf funcionava e o getch não.
colocando o ' apostrofo entre os números faz com que estes se tornem caracteres "char" epor isso funcionam com o getch() Que recebe um char em vez de um int.
To começando a gostar de C, este é apenas parte do trabalho que eu estou fazendo na faculdade para automatizar um autorama (Fazer ele contra voltas e tempos). Grande parte já está solucionada, mas este é o meu primeiro programa e tenho bastante dúvidas, ainda bem que achei este forum.
Obrigado pela ajuda de todos.
-
na verdade eu digitei errado, o comando scanf e o getch eu não uso junto eu coloquei somente como exemplo, mas o código é sem o scanf, quando eu uso sem o scanf ou seja com o getch do jeito que eu escrevi, o switch não funciona, agora se eu usar o scanf (sem o getch) o swtich funciona.
Na verdade o que eu coloquei foi o que eu sei (o que é muito pouco) se você tiver uma sugestão para que quando o cliente digitar uma tecla esta fosse armazenada em uma variavel sem a necessidade de pressionar o enter, me informe, por favor, o código que pode suprir esta necessidade.
-
Pessoal estou iniciando nesta linguagem e gostaria de tirar um dúvida, estou criando um menu do tipo
pressione 1 para fazer aquilo, 2 para fazer isso, 3 para acolá e assim por diante.
Porém se eu uso o scanf para ler a variável obrigatóriamente o usuária precisa digitar o número seguido de enter.
Gostaria do usuário digitasse o número e este já fosse armazenado na variável. tipo o getch().
tentei usar o getch() da seguinte forma
variavel = getch() o problema é que quando coloco a varíavel em uma estrutura de escolha a estrutura não consegue "entender" o valor ex:
printf("digite 1 para isso, 2 para aquilo");
scanf("%d", &variavel);
variavel = getch()
switch (variavel)
{
case 1:
faça isso;
case 2:
faça aquilo;
default:
faça acola;
}
Quando uso o código similar a este o swtch sempre cai na função default mesmo quando eu digito 1
se eu uso o scanf ele funciona direitinho, mas me obriga a pressionar o enter e eu não gostaria de ter que esperar o enter.
Alguém pode me auxíliar.
Ignorando Meu Printf
em C, C++
Postado
Pessoal o erro estava no espaço que o Flávio informou, após corrigir funcionou normalmente.
Fressato o delay e pause eu tinha tentado para ver se não era algum erro de input.
Lucas ainda não cheguei em ponteiros na faculdade, estou com um livro de C para me auxiliar no programa e cheguei a ler ponteiros, embora eu não tenha entendido o porquê de usá-lo se ele aponta para o endereço de uma variável e eu posso chamar direto a variável ??? mas acho que quando eu tiver mais avançado eu acho função para ele. rsrsrs
Quanto ao scanf fiz o teste aqui e ele deu exatamente o mesmo resultado tanto usando o &(address of) e sem o &
E mais uma vez obrigado, agora eu já tenho a função de entrada, e a de corpo do meu projeto, agora só falta uma função para print na tela.