Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

cobrinhakiller

Algoritmo Simples

Recommended Posts

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.