kwnds Posted November 14, 2006 at 08:45 PM Report #64384 Posted November 14, 2006 at 08:45 PM Estou a fazer um software que pergunte ao utilizador uma quantia de dinheiro e depois lhe devolva o dinheiro por moedas da maior para a mais pequena, exemplo: quantia: 4.85 euros moedas de 2 euros: 2 moedas de 50 centimos: 1 moedas de 20 centimos: 1 moedas de 10 centimos: 1 moedas de 5 centimos: 1 O codigo esta aqui, mas quando o executo ele nao mostra nenhum printf como se nao tivesse "getch". Pedia a alguem que o compilasse e me dissese onde estou a errar. #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <string.h> void main (void) { int n200, n100, n50, n20, n10, n5, n2, n1; double n; printf("Quantia de dinheiro a dividir por moedas em euros\n"); scanf("%lf",&n); do{ n=n-2; n200=n200+1; }while (n>2); do{ n=n-1; n100=n100+1; }while (n>1); do{ n=n-0.5; n50=n50+1; }while (n>0.5); do{ n=n-0.20; n20=n20+1; }while (n>0.20); do{ n=n-0.10; n10=n10+1; }while (n>0.10); do{ n=n-0.05; n5=n5+1; }while (n>0.05); do{ n=n-0.02; n2=n2+1; }while (n>0.02); do{ n=n-0.01; n1=n1+1; }while (n>0.01); printf("Moedas de 2 euros: %d",n200); printf("Moedas de 1 euros: %d",n100); printf("Moedas de 50 centimos: %d",n50); printf("Moedas de 20 centimos: %d",n20); printf("Moedas de 10 centimos: %d",n10); printf("Moedas de 5 centimos: %d",n5); printf("Moedas de 2 centimos: %d",n2); printf("Moedas de 1 centimo: %d",n1); getch(); } EDIT: Quando postares código, usa a ferramenta GeSHi. Ass. bk@ero
Hipnoted Posted November 14, 2006 at 08:48 PM Report #64385 Posted November 14, 2006 at 08:48 PM Antes de mais nada tenta usar o GeSHi... Depois, no fim do teu código antes de fechares a chaveta do main() acrescenta as seguintes duas linha de código: printf("\n\nPrima tecla para continuar..."); getch(); "Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"
Saco Posted November 14, 2006 at 09:42 PM Report #64397 Posted November 14, 2006 at 09:42 PM Não percebi a tua dúvida... o getch não é suposto fazer nenhum print... Mas tens aí 3 problemas: 1 - Não inicializas as variáveis, pelo que elas vão começar em valores mais ou menos aleatórios e não em 0. 2 - Ao utilizares o ciclo do...while() vais sempre contabilizar pelo menos uma moeda de cada. Deverias usar antes um ciclo while(). 3 - Nos printfs devias usar um \n para ficar um em cada linha, assim como está vai ficar tudo engalfinhado e não se percebe muito bem.
kwnds Posted November 15, 2006 at 12:29 AM Author Report #64447 Posted November 15, 2006 at 12:29 AM O problema é que quando eu testo este codigo no DEVC ao fim de inserir o numero, ele faz o scanf e fecha logo a tecla como se eu nao tivesse usado o "getch". Eu ja testei este software no turbo e ele nao me funciona. Alguem me pode corrigir o codigo? Ja passei bastante tempo á volta disto e nao consigo... Ele pela logica esta bem, começa por ver se o numero total é maior que 2 e se for, tira 2 ao total e conta 1 moeda de 2 euros, depois volta a repetir, ate que passa para 1 euro e por ai adiante...
Saco Posted November 15, 2006 at 12:52 AM Report #64453 Posted November 15, 2006 at 12:52 AM Ele pela logica esta bem, começa por ver se o numero total é maior que 2 e se for, tira 2 ao total e conta 1 moeda de 2 euros, depois volta a repetir, ate que passa para 1 euro e por ai adiante... ERRADO! O que o teu código faz é tirar 2 ao total e contar mais uma moeda de 2 euros e só depois é que verifica se é realmente necessária a moeda... foi o erro numero 2 que eu coloquei no post anterior. Já testei o teu código no devc e ele fica mesmo parado à espera que se carregue numa tecla. No entanto continua a padecer dos erros todos que já referi. EDIT: Obviamente não te vou fazer a papinha toda pois assim não aprendes. Mas lê o que escrevi no post anterior e corrige tu os erros.
kwnds Posted November 15, 2006 at 10:52 AM Author Report #64481 Posted November 15, 2006 at 10:52 AM Obrigado pela vossa ajuda, ja consegui solucionar isto. O meu problema era que desconhecia que o ciclo "while" podia ser usado separado do "do", mas agora que aprendi isto, vai-me dar bastante jeito! Vou então deixar o codigo corrigido: #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <string.h> void main (void) { int n200=0, n100=0, n50=0, n20=0, n10=0, n5=0, n2=0, n1=0; double n; printf("Quantia de dinheiro a dividir por moedas em euros\n"); scanf("%lf",&n); while (n>2) { n=n-2; n200=n200+1; } while (n1>1) { n=n-1; n100=n100+1; } while (n>0.5) { n=n-0.5; n50=n50+1; } while (n>0.20) { n=n-0.20; n20=n20+1; } while (n>0.10) { n=n-0.10; n10=n10+1; } while (n>0.05) { n=n-0.05; n5=n5+1; } while (n>0.01) { n=n-0.02; n2=n2+1; } while (n>0.01) { n=n-0.01; n1=n1+1; } printf("Moedas de 2 euros: %d \n",n200); printf("Moedas de 1 euros: %d \n",n100); printf("Moedas de 50 centimos: %d \n",n50); printf("Moedas de 20 centimos: %d \n",n20); printf("Moedas de 10 centimos: %d \n",n10); printf("Moedas de 5 centimos: %d \n",n5); printf("Moedas de 2 centimos: %d \n",n2); printf("Moedas de 1 centimo: %d \n \n \n",n1); printf("Prima qualquer tecla para continuar..."); getch(); }
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