Помогите, пожалуйста, с задачей ** паскаль. (В решение есть ошибки. Как написать код...

0 голосов
23 просмотров

Помогите, пожалуйста, с задачей на паскаль. (В решение есть ошибки. Как написать код правильно?)
Два поезда из разных населенных пунктов одновременно выезжают навстречу друг другу и через t часов они встретились. Еще через t1
часов первый поезд прибыл в пункт, из которого выехал второй поезд. Через какое время второй поезд прибудет в пункт, из которого выехал первый поезд.
Входные данные

Два целых неотрицательных числа t и t1 (не превосходят 24).
Выходные данные

Вывести время, через которое второй поезд прибудет в конечный пункт в формате часы минуты.


var t,t1,t2,a,a1,x,x1:real;

begin
read(t);
read(t1);

a:=t*60;
a1:=t1*60;
t2:=a*a/a1;

x:=t2 div 60;
x1:=t2 mod 60;

writeln(t2:0:0,' ',x:0:0,' ',x1:0:0);
end.


Информатика (94 баллов) | 23 просмотров
0

самообразование, пытаюсь разобраться в паскале

0

имею готовый код на с++, но цель понять как правильно написать на pascal

0

t2:=a*a/a1 - что происходит раньше: деление или умножение?

0

умножение

Дано ответов: 2
0 голосов
Правильный ответ

Var t,t1,t2,x,x1:real;

begin
readln(t);
readln(t1);

t2:=t*t/t1;

x:=trunc(t2);
x1:=frac(t2)*60;

writeln(t2,' ',x:0:0,' ',x1:0:0);
end.

Пример:
4.5
3
6.75 6 45

(194k баллов)
0 голосов

А дело всё в том, что операция mod на типе real не работает.
Ради работоспособности придётся либо менять алгоритм, либо жертвовать точностью, округляя t2:

var
    t, t1, t2, a, a1, x, x1: real;
begin
    readln(t);
    readln(t1);
    a := t * 60;
    a1 := t1* 60;
    t2 := (a * a) / a1;
    x := t2 div 60;
    x1 := Round(t2) mod 60;
    writeln(t2:0:0,' ',x:0:0,' ',x1:0:0);
end.

(7.2k баллов)
0

Также как и функция div. Спасибо