Leudassdf Posted March 17, 2012 Report Share Posted March 17, 2012 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) Link to comment Share on other sites More sharing options...
pmg Posted March 17, 2012 Report Share Posted March 17, 2012 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! Link to comment Share on other sites More sharing options...
Leudassdf Posted March 17, 2012 Author Report Share Posted March 17, 2012 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? Link to comment Share on other sites More sharing options...
pmg Posted March 17, 2012 Report Share Posted March 17, 2012 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! Link to comment Share on other sites More sharing options...
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