Leudassdf Posted March 17, 2012 at 10:42 PM Report #444402 Posted March 17, 2012 at 10:42 PM h=6; printf("Introduza a letra que tem valor!\n"); scanf("%c",&y); printf("Introduza o valor!\n"); scanf("%i",&valor); if (y='h'){ total=h*valor; printf("Energia=%i J\n",total); } if (y='e'){ total=h+valor; printf("Energia=%i J\n",total); } return 0; } este programa executa todos os calculos independentemente de y ser f,h. OU seja ele independentemente do valor que se encontra na variavel Y(char) ele efectua os calculos. Nunca fiz programas nesta linguagem pelo que peço que verifiquem se a comparaçao do if esta correta Edit: GeSHi adicionado (pmg)
pmg Posted March 17, 2012 at 10:49 PM Report #444406 Posted March 17, 2012 at 10:49 PM if (y='h'){ Isto é uma atribuição (do valor 'h' à variável y). O resultado da atribuição (usado no if) é o valor atribuido. Esse valor é diferente de 0 (é 'h') e portanto a condição é verdadeira. Para comparação usa o operador == if (y == 'h') { Alguns programadores gostam de usar "Yoda conditions" para evitar esse erro. Com "Yoda conditions" o compilador não aceita o programa if ('h' = y) Eu prefiro as condições normais e aumentar o nível de warnings do compilador 🙂 What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
Leudassdf Posted March 17, 2012 at 11:21 PM Author Report #444410 Posted March 17, 2012 at 11:21 PM if (y='h'){ Isto é uma atribuição (do valor 'h' à variável y). O resultado da atribuição (usado no if) é o valor atribuido. Esse valor é diferente de 0 (é 'h') e portanto a condição é verdadeira. Para comparação usa o operador == if (y == 'h') { Alguns programadores gostam de usar "Yoda conditions" para evitar esse erro. Com "Yoda conditions" o compilador não aceita o programa if ('h' = y) Eu prefiro as condições normais e aumentar o nível de warnings do compilador 🙂 so uma pergunta. como faço para apresentar um valor com casas decimais? tenho de colocar em double? e no printf como faço para ele apresentar 2 casas?
pmg Posted March 17, 2012 at 11:38 PM Report #444413 Posted March 17, 2012 at 11:38 PM Sim, coloca em double e usa o formato "%lf" no scanf e "%.2f" no printf() double h, valor, total; /* ... */ scanf("%lf", &valor); /* ... */ printf("%.2f\n", total); What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now