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

Repetindo Mais Do Que Deveria


hlegius

Pergunta

Pessoal,

Estou com um probleminha..

Na verdade, dois!

# include <stdio.h>
# include <conio.h>
# include <math.h>

/* Problemas:  Ele duplica a lista de seleção;
  Acentos errados no DOS; 
*/



/*
Função para tirar raíz quadrada da fiteira
*/
int raiz( int v ){
	printf("Digite o valor: ");
  scanf("%d",&v);
	printf("O valor de %d é %f\n",v,sqrt(v));
  return 0;
}
/*
 Função para elevar a potencia um valor ( b elevado a e )
*/
int potencia( int b , int e ){
	printf("Digite o valor da base: ");
  scanf("%d",&b);
	printf("Digite o valor do expoente: ");
  scanf("%d",&e);
	printf("O valor de %d elevado à %d é: %f\n",b,e,pow(b,e));
  return 0;
}
/*
 Principal
*/	
main(){
  int opc=0;
  float v,b,e;
	clrscr();
	printf("Bem-vindo garoto!\n");
	while(opc != 3){
  printf("Escolha uma opção:\n");
  printf("1 . Raiz quadrada de um número\n");
  printf("2 . Potencia de x elevado à y\n");
  printf("3 . Sair do programa\n");
  printf("Sua vez: ");
  	opc = getchar();
  switch(opc){
  	case '1':
    raiz(v);
  	break;
  	case '2':
    potencia(b,e);
  	break;
  	case '3':
    opc = 3;
  	break;
  }
	}
	return 0;
}

Está descrito no sistema os problemas...

Então, ele duplica a parte de opções do While ... tipo eu escolho na primeira vez ele exibe só uma vez normal ... mas depois que executo a primeira ação e ele volta no while ele começa a repetir duas vezes a lista ...

e tipo os acentos estão saindo caracteres estranhos no lugar...

Alguém poderia me dar um help aí ?

até... smile.gif

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

cara é o seguinte....

quando você está lendo um caracter do teclado você digita na verdade dois.....

o caracter que você quer e o enter.....então basta colocar um outro getchar após a leitura do caracter que você realmente deseja ler......fica assim:

opc = getchar();
getchar();

acho que só isso já resolve....

te+

Link para o comentário
Compartilhar em outros sites

  • 0

Opa, beleza? E outro errinho :

int raiz( int v ){

printf("Digite o valor: ");

scanf("%d",&v);

printf("O valor de %d é %f\n",v,sqrt(v));

return 0;

}

Como você mostra a variavel v como float sendo que ela e inteira??

Se não der certo tente tambem um do while, pois ele testa a condição de depois de executar as instruções do proprio escopo.

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,1k
    • Posts
      651,7k
×
×
  • Criar Novo...