bug em programa c

frog

Power Member
Ola fiz um mini-programa em C que quase nao serve para nada, so serve para vcs digitarem dois numerose ele diz qual e o maior:lol: (inutil!!!), mas foi o meu prmeiro

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

main() {
int a, b;

printf("Digite a: ");//Saida
scanf("%d", &a); //Entrada
printf("Digite b: ");
scanf("%d", &b);

if(a>b)
printf("A e maior que B");
if(a<b)
printf("A e menor que B");
else
printf("Sao iguaizinhos");
getch();
}

o problema e que como vcs vem tenho um frase para dizer qunado eles sao iguais so qu qunado eu ponho a maior que b aparece a seguinte frase"
A e maior que BSao iguaizinhos" sff digame qual e o erro
 
isso é pk o else está dentro do 2º if, ou seja, metes a > b, ele testa if (a>b) e escreve que a é maior que b, certo? a seguir testa if (a < b), e como não é vdd não escreve nada, mas a seguir meteste o else, ou seja, ele a seguir a testar (a < b) e verificar que é falso, ele entra no else e faz o que lá está dentro! tens que meter em vez do 2º if , um else if... assim:

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

main() {
int a, b;

printf("Digite a: ");//Saida
scanf("%d", &a); //Entrada
printf("Digite b: ");
scanf("%d", &b);

if(a>b)
printf("A e maior que B");
else if(a<b)
printf("A e menor que B");
else
printf("Sao iguaizinhos");
getch();
}

acho que assim irá resultar...

ah, e para que é a livraria conio?
 
Boas!

De facto o teu problema é mesmo o que o jahred referiu. Do primeiro if para o segundo não tens qualquer instrução de paragem ou nenhum outro tipo de validação.

O programa verifica normalmente o primeiro if, se entrar neste é desnecessário verificar qualquer um dos outros mas da forma como tu tens ele verifica. Isto porque o segundo if NÃO ESTÁ dentro do primeiro.

Um outro método (de má programação...), seria em vez do ultimo else meteres outro if com a devida condição. Assim ele verificava TODOS os ifs, mas claro que só iria entrar num. A sugestão que te dou é tornares o código o mais limpo e eficas possivel, ou seja, seguires a sugestão do jahred.

abraços, HecKel
 
obrigado

Muito obrigado pelas vossas sugestoes, realmente funcionaram!
Tenho uma outra duvida quando eu escrevo este caracter "é" no codigo fonte , depois no programa ja complado aparece "Ú".
Adeus e muito obrigado
 
estou na dúvida se é problema da codificação do ficheiro concretamente dita, se é problema de interpretação do compilador. De qualquer das formas a justificação é simples, caracteres ditos especiais por vezes não são devidamente apresentados após a compilação/interpretação do ficheiro.

Como não tenho certeza da origem do problema..., certifica-te que a codificação do ficheiro não é UTF.

abraços, HecKel
 
yah, esse problema tb não sei resolver. o que eu faço é U', assim ja da pra perceber... nem metendo o código ascii para o caracter Ú ele funciona...
 
para utilizares caracters especiais tens que utilizar sempre a tabela ascii. para veres essa tabela vais ao msdn e procuras ascii...comigo resulta sempre...
 
ajuda

Boas ... primeiro que tudo tens os ifs mal pensados e pior ainda mal executados..
Fases um if, asseguir outro com um else, logo vais ter sempre dois outputs(não é bem o que tu queres)

e cuidado que é getchar() e não getch();

um abraço, qualquer coisa diz.. fica bem
 
Back
Topo