Помогите, пожалуйста, с задачей на паскаль. (В решение есть ошибки. Как написать код правильно?)
Два поезда из разных населенных пунктов одновременно выезжают навстречу друг другу и через 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.

Ответы

Ответ дал: BrightOne
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.

Ответ дал: osseruy
0
Также как и функция div. Спасибо
Ответ дал: Аноним
0
Так и в С/С++ не определен остаток от деления вещественных... % определен только для целочисленных, а операция деления для целых и вещественных просто перегружена
Ответ дал: petyaGavrikov
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
Вас заинтересует