fezinn Posted April 13, 2009 at 07:48 PM Report #256581 Posted April 13, 2009 at 07:48 PM Boa tarde pessoal, Sou do Brasil, mas acho que dá para entender o que falo, se não está a me entender, posso escrever em inglês. [i'm from Brazil, if you can't understand me, please let me know... I will rewrite this text 😄 ] Primeiramente, parabéns pelo fórum, já me ajudou bastante, e olha que eu descobri dele hoje!! Bem, estou com um problema...É com um programa que criei para converter comprimentos, tempos e velocidades. A parte de tempos e velocidades está incompleta, mas o problema está mesmo na parte de comprimentos... O código pode ser encontrado aqui (achei a letra muito pequena, e o pastie.org é mais intuitivo): http://pastie.org/445306 Aí está o código: #include <stdio.h> #include <ctype.h> #include <stdlib.h> #include <conio.h> main(){ int opcao; char opcaov1,opcaov2; double mm,cm,km,m,valorv; printf("\t\t\tMENU\n\n"); printf("1 - Conversao de Comprimento\n"); printf("2 - Conversao de Velocidade\n"); printf("3 - Conversao de Tempo\n"); scanf("%d",&opcao); switch (opcao){ case 1: system("cls"); printf("\n\t\t\tCONVERSAO DE COMPRIMENTO\n"); printf("\nQual a unidade de medida inicial?\n"); printf("\n\na - Milimetros <mm>"); printf("\nb - Centimetros <cm>"); printf("\nc - Metros <m>"); printf("\nd - Quilometros <km>\n"); scanf("%c",&opcaov1); switch (opcaov1){ case 'a': cm=mm/10; m=mm/1000; km=mm/1000000; printf("Converter Milimetros"); break; case 'b': mm=10*cm; m=cm/100; km=cm/100000; printf("Converter Centimetros"); break; case 'c': mm=m*1000; cm=m/100; km=m/1000; printf("Converter Metros"); break; case 'd': mm=km*1000000; cm=km*100000; m=km*1000; printf("Converter Quilometros"); break; } printf("Qual o valor da unidade de medida que se deseja converter? "); scanf("%lf",&valorv); system("PAUSE"); printf("\nQual unidade de medida para qual se deseja converter?"); printf("\n\ne - Milimetros <mm>"); printf("\nf - Centimetros <cm>"); printf("\ng - Metros <m>"); printf("\nh - Quilometros <km>\n"); scanf("%c",opcaov2); system("PAUSE"); switch (opcaov2){ case 'e': printf("%lf equivalem a %lf mm",valorv,mm); break; case 'f': printf("%lf equivalem a %lf cm",valorv,cm); break; case 'g': printf("%lf equivalem a %lf m",valorv,m); break; case 'h': printf("%lf equivalem a %lf km",valorv,km); break; } break; case 2: printf("CONVERSAO DE VELOCIDADE"); break; case 3: printf("CONVERSAO DE TEMPO"); default: printf("Opcao invalida! Fechando programa..."); break; } system("PAUSE"); } Olhem algumas screens: Primeira tela: http://img522.imageshack.us/img522/4103/screen1c.jpg Conversão de comprimentos: http://img185.imageshack.us/img185/8425/screen2n.jpg Aqui está o primeiro erro... eu não consigo digitar o numero! =/ http://img178.imageshack.us/img178/2366/screen3r.jpg Aqui está o segundo erro... não consigo selecionar o character =/ http://img135.imageshack.us/img135/4712/screen4ass.jpg
Solution Baderous Posted April 13, 2009 at 08:19 PM Solution Report #256588 Posted April 13, 2009 at 08:19 PM Precisas de limpar o buffer de entrada, de cada vez que lês um valor (pressionar de tecla), porque quando o fazes, carregas na tecla em questão e no Enter, logo não estás a introduzir 1, mas 2 caracteres, sendo o 1º utilizado normalmente, mas o segundo é aproveitado para a operação seguinte de leitura. Tenta colocar isto depois de cada scanf: scanf("%*[^\n]"); scanf("%*c"); Podes ver a explicação aqui: https://wiki.portugal-a-programar.pt/dev_geral/c/scanfparastrings/
fezinn Posted April 13, 2009 at 09:55 PM Author Report #256597 Posted April 13, 2009 at 09:55 PM @Baderous: Obrigado cara! Funcionou. Porém, estou com outro erro agora... http://img245.imageshack.us/img245/626/screen1.jpg Sabes o que pode ser?
Baderous Posted April 13, 2009 at 10:00 PM Report #256599 Posted April 13, 2009 at 10:00 PM Falta o & neste scanf: scanf("%c",opcaov2);
fezinn Posted April 13, 2009 at 10:09 PM Author Report #256600 Posted April 13, 2009 at 10:09 PM Mais uma coisinha please... E como faaço para que quando digite "34" nao apareça "34.00000", pensava que era printf("%.2. %lf equivalem a %.2. %lfmm",valorc,mm); Não é? Abraços e obrigado! Código: http://pastie.org/pastes/445455
Rui Carlos Posted April 14, 2009 at 11:43 AM Report #256670 Posted April 14, 2009 at 11:43 AM Mais uma coisinha please... E como faaço para que quando digite "34" nao apareça "34.00000", pensava que era printf("%.2. %lf equivalem a %.2. %lfmm",valorc,mm); Não é? Abraços e obrigado! Código: http://pastie.org/pastes/445455 Penso que é isto que pretendes: printf("%.2lf equivalem a %.2lfmm",valorc,mm); Rui Carlos Gonçalves
fezinn Posted April 14, 2009 at 08:00 PM Author Report #256765 Posted April 14, 2009 at 08:00 PM Era isto mesmo! Obrigado pessoal, este blog está a me ajudar um bocado! Sou iniciante mas estou aprendendo hahaha Abraços!
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