• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

SitoMan

[Duvida] Fechar programa com letra E (Muito noob)

15 mensagens neste tópico

Viva!

Tenho este programa feito:

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

int main()
{
  int num1, num2;
  printf("Insira o primeiro numero\n");
  scanf("%d",&num1);
  printf("Insira o segundo numero\n");
  scanf("%d",&num2);
  printf("Os caracteres inseridos foram %d e %d\n",num1,num2);
  system("pause");
  getchar ();	
  return 0;
}

Penso que não tem nenhum BUG!

O que eu queria, era:

Assim que o programa termina-se as suas funções.. Queria que aparece-se uma frase: "Deseja fechar? Carregue na tecla E".

Ou seja.. Não quero que o programa feche com qualquer tecla. Quero que só feche com a tecla E.

Como Faço?

Obrigado e desculpem a ignorancia!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Usa um ciclo, que só termina quando o utilizador introduzir um determinado valor. Armazenas esse valor numa variável, e enquanto for diferente de 'E', continua o executar o ciclo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Usa um ciclo, que só termina quando o utilizador introduzir um determinado valor. Armazenas esse valor numa variável, e enquanto for diferente de 'E', continua o executar o ciclo.

Em código fica:

printf("Deseja fechar? Carregue na tecla E.\n");
while (getchar()!='E');
return 0;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hum.. Fixe!

Já consegui! Obrigado!

Agora outra coisa..

Se eu quiser meter por exemplo que o programa feche com a tecla E e com a tecla P?

Tipo.. O usuario pode escolher se quer fechar com a tecla E ou a tecla P!

Como se faz?

Thanks!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Usando o código fornecido pelo Tharis:

char x;
scanf("%c",&x); //Isto le o caracter a ser usado.
printf("Deseja fechar? Carregue na tecla %c.\n",x);
while (getchar()!=x);
return 0;

Ou caso eu tenha percebido mal é possivel que seja isto :):

printf("Deseja fechar? Carregue na tecla P ou E.\n",x);
while (getchar()!='E' || getchar()!='P');
return 0;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Usando o código fornecido pelo Tharis:

char x;
scanf("%c",&x); //Isto le o caracter a ser usado.
printf("Deseja fechar? Carregue na tecla %c.\n",x);
while (getchar()!=x);
return 0;

Isto aqui envolve mais senas.. Ja envolve o Scanf e tudo...

Ou caso eu tenha percebido mal é possivel que seja isto :):

printf("Deseja fechar? Carregue na tecla P ou E.\n",x);
while (getchar()!='E' || getchar()!='P');
return 0;

Isto aqui, para fechar tem que se meter EP. E não é bem isso que quero. Eu quero que aquilo feche só com E ou feche só com P.

Entendes?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

void exit_with(const char *letters) {
 int ch;
 do {
   ch = getchar();
 } while ((ch != EOF) && (letters && !strchr(letters, ch)));
 exit(ch == EOF ? EXIT_FAILURE : EXIT_SUCCESS);
}

E podes chamar a função, por exemplo, assim

#include <stdio.h>

/* Nao esquecer de por o protótipo da função exit_with() em "scope" */

int main(void) {
 printf("Enter E or P to exit\n");
 exit_with("EPep");
 return 0;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isto aqui, para fechar tem que se meter EP. E não é bem isso que quero. Eu quero que aquilo feche só com E ou feche só com P.

Entendes?

Não tem que se premir EP.. O controlador || trabalha como OR, ou seja, quando carregado o E ou P, ele fecha.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ou caso eu tenha percebido mal é possivel que seja isto :):

printf("Deseja fechar? Carregue na tecla P ou E.\n",x);
while (getchar()!='E' || getchar()!='P');
return 0;

Suponhamos que introduzes E. Ele falha na primeira comparação, e vai para a segunda, onde terás que introduzir um novo caracter. E a segunda só vai falhar se introduzires um P.

Ou seja, tens que introduzir EP para saíres do ciclo.

Devias usar &&, e devias armazenar a variável, para não teres que introduzir dois caracteres.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@pmg,

para quem está a aprender (deduzo do código e da dúvida), dúvido que isso o ajude... :|

@SitoMan,

faz assim

printf("Deseja fechar? Carregue na tecla P ou E.\n");
while (1) {
   c=getchar();
   if (c=='e' || c=='p') break;
}
return 0;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Suponhamos que introduzes E. Ele falha na primeira comparação, e vai para a segunda, onde terás que introduzir um novo caracter. E a segunda só vai falhar se introduzires um P.

Ou seja, tens que introduzir EP para saíres do ciclo.

Devias usar &&, e devias armazenar a variável, para não teres que introduzir dois caracteres.

Bleh, é o que dá trabalhar sem dormir :)

Yup, tens razão. Já me estou a confundir todo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@pmg,

para quem está a aprender (deduzo do código e da dúvida), dúvido que isso o ajude... :|

@SitoMan,

faz assim

printf("Deseja fechar? Carregue na tecla P ou E.\n");
while (1) {
   c=getchar();
   if (c=='e' || c=='p') break;
}
return 0;

Qual é a ideia de usar um break em vez de colocar a condição no while? Isto só dificulta a legibilidade do código.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então como faço?

A maneira mais simples de preferência, e a maneira que eu consiga compreender mais facilmente! Obrigado!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

do {
printf("Prima a tecla P ou E\n");
c = getchar();
scanf("%*[^\n]"); scanf("%*c"); //limpar o buffer
} while (c!= 'E' && c!='P');

Sem ciclos infinitos com breaks no meio fica melhor.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@pmg,

para quem está a aprender (deduzo do código e da dúvida), dúvido que isso o ajude... :|

Aceito a crítica :)

Mas não espero ir-me embora do site ainda por umas horas e estou pronto a expandir a resposta e tirar dúvidas.

De qualquer maneira, quem está a aprender (e quem já trabalha há anos em C) deve, na minha opinião, fazer o máximo de funções em que consegue pensar para um determinado problema.

A tarefa que sai do programa quando se carrega em determinada tecla é uma boa candidata para uma função específica.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora