Уровень С Занятия в школе начинаются в 8-30. Урок длится 45 минут, перерывы между уроками - 10 минут. Ввести номер урока и вывести время его окончания.
Пример: (его не нужно переписывать, он дан для понимания задачи) Введите номер урока: 6 13-50
procedure tf; var q,j:longint; o:array[1..10] of longint; begin write(m[1],' '); q:=1; o[q]:=m[1]; i:=1; while q<>3 do begin i:=i+1;
if q=1 then if m[i]<>o[1] then begin write(m[i],' '); q:=q+1; o[q]:=m[i]; end;
if q=2 then if (m[i]<>o[1]) and (m[i]<>o[2]) then begin write(m[i]); q:=q+1; end; end; end;
procedure tm; var mk:array[1..10] of longint; begin for i:=1 to 3 do mk[i]:=0;
for i:=1 to n do if mk[1]<m[i] then begin mk[3]:=mk[2]; mk[2]:=mk[1]; mk[1]:=m[i]; end else if (mk[2]<m[i]) and (m[i]<>mk[1]) then begin mk[3]:=mk[2]; mk[2]:=m[i]; end else if (mk[3]<m[i]) and (mk[2]<>m[i]) then mk[3]:=m[i];
write(mk[1],' ',mk[2],' ',mk[3]); end;
Скорее всего это можно было написать чище и оптимальнее, но вот моё решение на скорую руку
Простейший вариант программы, предполагающий, что строка записана абсолютно верно и содержит только числа, соединенные знаком "плюс".
const digits=['0'..'9']; var s,sn:string; i,err:integer; n,sum:longint;
begin Write('Введите числа, соединяя их знаком плюс: '); Readln(s); i:=2; sn:=s[1]; sum:=0; while i<=Length(s) do begin if s[i] in digits then sn:=sn+s[i] else begin Val(sn,n,err); sum:=sum+n; sn:='' end; Inc(i) end; Val(sn,n,err); sum:=sum+n; Writeln('Сумма равна ',sum) end.
Тестовое решение: Введите числа, соединяя их знаком плюс: 21+22+3 Сумма равна 46
m:array[0..1000] of longint;
n,i:longint;
procedure tf;
var
q,j:longint;
o:array[1..10] of longint;
begin
write(m[1],' ');
q:=1;
o[q]:=m[1];
i:=1;
while q<>3 do
begin
i:=i+1;
if q=1 then
if m[i]<>o[1] then
begin
write(m[i],' ');
q:=q+1;
o[q]:=m[i];
end;
if q=2 then
if (m[i]<>o[1]) and (m[i]<>o[2]) then
begin
write(m[i]);
q:=q+1;
end;
end;
end;
procedure tm;
var
mk:array[1..10] of longint;
begin
for i:=1 to 3 do
mk[i]:=0;
for i:=1 to n do
if mk[1]<m[i] then
begin
mk[3]:=mk[2];
mk[2]:=mk[1];
mk[1]:=m[i];
end else
if (mk[2]<m[i]) and (m[i]<>mk[1]) then
begin
mk[3]:=mk[2];
mk[2]:=m[i];
end else
if (mk[3]<m[i]) and (mk[2]<>m[i]) then mk[3]:=m[i];
write(mk[1],' ',mk[2],' ',mk[3]);
end;
Скорее всего это можно было написать чище и оптимальнее, но вот моё решение на скорую руку
const
digits=['0'..'9'];
var
s,sn:string;
i,err:integer;
n,sum:longint;
begin
Write('Введите числа, соединяя их знаком плюс: ');
Readln(s);
i:=2; sn:=s[1]; sum:=0;
while i<=Length(s) do begin
if s[i] in digits then sn:=sn+s[i]
else begin
Val(sn,n,err);
sum:=sum+n;
sn:=''
end;
Inc(i)
end;
Val(sn,n,err);
sum:=sum+n;
Writeln('Сумма равна ',sum)
end.
Тестовое решение:
Введите числа, соединяя их знаком плюс: 21+22+3
Сумма равна 46