// PascalABC.NET 3.3, сборка 1625 от 17.01.2018 // Внимание! Если программа не работает, обновите версию!
procedure pSum(a,b:integer; var r:integer); begin r:=a.To(b).Sum end;
function fSum(a,b:integer):=a.To(b).Sum;
begin var (a,b):=ReadInteger2('Начало и конец интервала:'); var c:integer; pSum(a,b,c); Writeln('Сумма при процедуры: ',c); Writeln('Сумма при функции : ',fSum(a,b)) end.
Пример Начало и конец интервала: 3 28 Сумма при процедуры: 403 Сумма при функции : 403
Велосипедист на тренировке в первый день проехал 19 км за 54 минуты. В каждый последующий день он проезжал этот же путь на 2 минуты быстрее, чем в предыдущий. Найти среднюю скорость велосипедиста, которую он показал, тренируясь неделю.
Решение Средняя скорость будет равна отношению всего пройденного пути к затраченному времени. Путь за неделю составит 19×7 км. Время может быть найдено как 54+(54-2)+(54-4)+...
function T(a0,h:real; k:integer):real; begin Result:=0; var ts:=a0; loop k do begin Result+=ts; ts-=h end; Result/=60 end;
procedure Phisics(n:integer; t0,dt,s1:real); begin var s:=n*s1; var v:=s/T(t0,dt,n); Writeln('Средняя скорость ',v,' км/час') end;
begin var n:=ReadInteger('Количество дней:'); var s:=ReadReal('Длина трека, км:'); var (t0,th):=ReadReal2('Время в первый день и величина улучшения, мин:'); Phisics(n,t0,th,s) end.
Результат Количество дней: 7 Длина трека, км: 19 Время в первый день и величина улучшения, мин: 54 2 Средняя скорость 23.75 км/час
m & 1 - это битовая конъюнкция. Результатом будет 1, если m нечетное, и 0, если m - четное (то есть, содержит или не содержит соответствующий разряд)
Выражение вида T ? X : Y, где T - логическое высказывание, принимает значение X, если T истинно, и Y, если T ложно.
Соответственно, i = (m & 1) == 1 ? m : m + 1 означает, что
если m нечетное, то i = m
если четное, i = m+1 (то есть, первое нечетное число после m)
i += 2 означает, что цикл идет с шагом, соответственно, рассматриваются только нечетные числа.
// Внимание! Если программа не работает, обновите версию!
procedure pSum(a,b:integer; var r:integer);
begin
r:=a.To(b).Sum
end;
function fSum(a,b:integer):=a.To(b).Sum;
begin
var (a,b):=ReadInteger2('Начало и конец интервала:');
var c:integer;
pSum(a,b,c);
Writeln('Сумма при процедуры: ',c);
Writeln('Сумма при функции : ',fSum(a,b))
end.
Пример
Начало и конец интервала: 3 28
Сумма при процедуры: 403
Сумма при функции : 403
Велосипедист на тренировке в первый день проехал 19 км за 54 минуты. В каждый последующий день он проезжал этот же путь на 2 минуты быстрее, чем в предыдущий. Найти среднюю скорость велосипедиста, которую он показал, тренируясь неделю.
Решение
Средняя скорость будет равна отношению всего пройденного пути к затраченному времени. Путь за неделю составит 19×7 км.
Время может быть найдено как 54+(54-2)+(54-4)+...
function T(a0,h:real; k:integer):real;
begin
Result:=0;
var ts:=a0;
loop k do begin
Result+=ts; ts-=h
end;
Result/=60
end;
procedure Phisics(n:integer; t0,dt,s1:real);
begin
var s:=n*s1;
var v:=s/T(t0,dt,n);
Writeln('Средняя скорость ',v,' км/час')
end;
begin
var n:=ReadInteger('Количество дней:');
var s:=ReadReal('Длина трека, км:');
var (t0,th):=ReadReal2('Время в первый день и величина улучшения, мин:');
Phisics(n,t0,th,s)
end.
Результат
Количество дней: 7
Длина трека, км: 19
Время в первый день и величина улучшения, мин: 54 2
Средняя скорость 23.75 км/час