cobrinhakiller 0 Denunciar post Postado Dezembro 15, 2006 Olá galera, sou novato em algoritmo gostaria de uma ajudinha na questão abaixo: Tomando como base de partida A, a Ferrari partiria do marco zero (ponto de partida), entano que, o Fusca partiria do ponto B com 999 Kilometros a frente do ponto de partida A. Sabe-se que o Fusca atinge 71.12 Km por hora e a Ferrari atinge 343.33 Km por hora. Em quantas horas a Ferrari levará para ultrapassar o Fusca? Sendo que ambos os carros correm o tempo todo nas suas velocidades máximas dadas acima. Fiz como mostra abaixo: Algoritmo declare PONTO_A, PONTO_B real declare CONT_HORA inteiro CONT_HORA <- 0 PONTO_A <- 0 PONTO_B <- 999.00 enquanto PONTO_A <= PONTO_B faça PONTO_A <- PONTO_A + (71.12/3.600) * PONTO_A PONTO_B <- PONTO_B + (343.33/3.600) * PONTO_B CONT_HORA <- CONT_HORA + 1 fim enquanto escreva ("A Ferrari levarah ",CONT_HORA," horas para ultrapassar o Fusca") fim algoritmo. Bom, para saber se funfava, rodei no turbo pascal mai a coisa naum funfou :[ Aguem poderia me ajudar? O erro seria no calculo ou no algoritmo? Agradeço desde jah! Título Editado ! Compartilhar este post Link para o post Compartilhar em outros sites
Rafael D 0 Denunciar post Postado Dezembro 15, 2006 Olhando rapidamente, creio que o erro está em: PONTO_A <- PONTO_A + (71.12/3.600) * PONTO_APONTO_B <- PONTO_B + (343.33/3.600) * PONTO_B Tente substituir por: PONTO_B <- PONTO_B + (71.12/3.600) PONTO_A <- PONTO_A + (343.33/3.600) obs: a divisão por 3.600 não é necessária. Como ambos os valores dividos são constantes, e o divisor é sempre o mesmo, você pode deixar 71.12 e 343.33 que o resultado será o mesmo.Caso ainda de errado, avise que posso ter cometido algum engano.Flws Compartilhar este post Link para o post Compartilhar em outros sites
Palc 0 Denunciar post Postado Dezembro 16, 2006 Está no caminho certo !Tem um probleminha no cálculo: -se dividir por 3600, o tempo (medido pelo seu contador CONT_HORA) passa a ser em segundos ao invés de horas.Outro probleminha no algorítmo: -faça como apontou o Rafael D (o tempo será em segundos) ou -sem dividir por 3600 (o tempo será em horas).Claro que simulando o tempo em segundos você terá um resultado beeem mais preciso do que simulando em horas. Porém vai demorar mais até atingir o resultado. Como o computador simula rapidão a "demora" nem chega ser um problema :P.Faz dos dois modos e compara os resultados ;) {}Palc Compartilhar este post Link para o post Compartilhar em outros sites
cobrinhakiller 0 Denunciar post Postado Dezembro 18, 2006 Bacana gente, vlw pela força!fiz o codigo no pascal assim: program EITA;uses CRT;var PONTO_A, PONTO_B:real; CONT_HORA:integer; begin clrscr; PONTO_A := 0; PONTO_B := 999.00; CONT_HORA := 0; while PONTO_A <= PONTO_B do begin PONTO_A := PONTO_A + 71.12; PONTO_B := PONTO_B + 3343.33; inc(CONT_HORA); end; writeln ('A Ferrari levarah ',CONT_HORA,' para ultrapassar o fusca'); readkey;end.mais da pau e naum sei o que eh, o programa naum roda, trava, alguem poderia dar um help?brigadaum! Compartilhar este post Link para o post Compartilhar em outros sites
Rafael D 0 Denunciar post Postado Dezembro 19, 2006 O seu programa está travando porque ele não sai do loop.Você colocou: PONTO_A := 0;PONTO_B := 999.00; E está fazendo: PONTO_A := PONTO_A + 71.12;PONTO_B := PONTO_B + 3343.33; Ou seja, A começou em zero e aumenta de 71 em 71Equanto B começou de 999 e aumenta de 3343 em 3343Logo A nunca vai passar B, você deve ter invertido os valores por engano.flws Compartilhar este post Link para o post Compartilhar em outros sites
Palc 0 Denunciar post Postado Dezembro 23, 2006 B = Fusca ;)e o A = Ferrrari e a velocidade dela não é 3343,33 e sim 343,33 !Se liga aí :P{}Palc Compartilhar este post Link para o post Compartilhar em outros sites
cobrinhakiller 0 Denunciar post Postado Dezembro 27, 2006 Opa, mals pela demora... pois eh Rafael e Palc, eu dei uma pequena vacilada quando fui postar no forum o algoritmo, troquei os valores =( mais obrigado pela força!Abraço! Compartilhar este post Link para o post Compartilhar em outros sites