nana91 Posted March 16, 2012 Report Share Posted March 16, 2012 Olá pessoal, tenho o seguinte exercício: #include <stdio.h> #include <stdlib.h> #include <math.h> double discount (int p, int d) { return 100 - ((d * 100)/p); } void exercise_1_6 (void); int main (void) { exercise_1_6 (); return 0; } void exercise_1_6 (void) { int p; int d; while (scanf ("%d%d", &p, &d) != EOF) { double z = discount (p, d); printf ("%0.2f\n", z); } } Quando vou compilar e introduzo os seguintes valores: 26500 25000 dá-me 6 E eu necessito que me dê 5,660377. Como é que faço para que me dê o resultado pedido pelo prof. Obgd. Link to comment Share on other sites More sharing options...
pmg Posted March 16, 2012 Report Share Posted March 16, 2012 Na instrução return 100 - ((d * 100)/p); as contas são inteiras; ou seja 4/3 dá 1; ou 29/30 dá 0; ... Sugestão: em vez de 100, mete lá 100.0 🙂 Assim as divisoes sao de virgula flutuante: 4/3.0 dá 1.3333333; 29.0/30 dá 0.96666666 Outra coisa: em vez de comparares o valor devolvido pela função scanf() com EOF compara com 2. Na função estás a tentar atribuir valor a 2 variaveis. Se o scanf() devolver 2 tá tudo bem; se devolver 1 quer dizer que só a primeira atribuição correu bem; se devolver 0 nenhuma atribuição correu bem e se devolver menor que 0 (o EOF) indica erro no input. while (scanf("%d%d", &p, &d) == 2) 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