Миша заблудился в лесу и пытается выйти. Он составил план маршрута выхода из леса. План состоит из N прямолинейных отрезков пути. Сначала Миша идёт a1 метров на север, потом a2 метров на восток, потом a3 метров на юг, затем a4 метров на запад, затем он опять начинает повторять направления в порядке север, восток, юг, запад, то есть a5 метров он проходит на север, a6 метров на восток и т.д. Оказалось, что для того, чтобы выйти из леса из его первоначальной точки, ему нужно было пройти ровно K метров в любом из четырёх направлений, то есть первоначально Миша находится в центре квадрата со стороной 2K метров.
Введём систему координат, в которой Миша первоначально находился в центре координат, ось OX направлена на восток, ось OY направлена на север, а единица измерения равна 1 метру. Определите, в какой точке Миша выйдет из леса (впервые окажется на границе леса), если будет следовать своему плану, или в какой точке его маршрут закончится, если он не выйдет из леса.
Case понимает только integer, т.е можно написать: case A of 1 : bla 2 : bla-bla end; такое выражение выдаст ошибку: case A of 'sin' : bla 'cos' : bla-bla end; т.к в данном случае используется string вместо integer; если делается калькулятор в одно действие (число - знак - число, пример: 2 + 3), то можно сделать так: if znak = 'sin' then result := sin(number) else if znak = 'cos' then result := cos(number) ... (другие условия) Если же создаётся калькулятор с неограниченным числом параметров (2 + 5 * 4 / 5), то имеет смысл найти парсинга математических выражений Вроде всё
var num : integer; begin readln(num); case num of 1 : bla (понедельник) 2 : bla-bla (вторник) ... 6 : bla-bla-bla (суббота) end; end.
Var i, j, n, kolPol, kolOtr, sum, p, ch, k :integer; a :array of integer;
begin
readln(n); SetLength(a,n+1); randomize; for i:= 1 to n do a[i]:= random(100)-50;
sum:= 0; p:= 1; for i:= 1 to n do begin if a[i] > 0 then begin inc(kolPol); sum:= sum + a[i]; end; if a[i] > 0 then begin inc(kolOtr); p:= p * a[i]; end; end;
i:= 1; p:= 1; ch:= 0; while (a[i] >= 0) and (i <> n+1) do begin p:= p * a[i]; inc(ch); inc(i); end;
if ch <> 0 then writeln('Произведение до первого отрицательного элемента: ',p) else writeln('Первый элемент массива отрицательный!');
for i:= 1 to n-1 do for j:= 1 to n-i do if a[j] > a[j+1] then begin k:= a[j]; a[j]:= a[j+1]; a[j+1]:= k; end; writeln('Массив отсортирован по возрастанию:'); for i:= 1 to n do write(a[i],' ');
case A of
1 : bla
2 : bla-bla
end;
такое выражение выдаст ошибку:
case A of
'sin' : bla
'cos' : bla-bla
end;
т.к в данном случае используется string вместо integer;
если делается калькулятор в одно действие (число - знак - число, пример: 2 + 3), то можно сделать так:
if znak = 'sin' then
result := sin(number)
else
if znak = 'cos' then
result := cos(number)
... (другие условия)
Если же создаётся калькулятор с неограниченным числом параметров (2 + 5 * 4 / 5), то имеет смысл найти парсинга математических выражений
Вроде всё
var
num : integer;
begin
readln(num);
case num of
1 : bla (понедельник)
2 : bla-bla (вторник)
...
6 : bla-bla-bla (суббота)
end;
end.
i, j, n, kolPol, kolOtr, sum, p, ch, k :integer;
a :array of integer;
begin
readln(n);
SetLength(a,n+1);
randomize;
for i:= 1 to n do
a[i]:= random(100)-50;
sum:= 0; p:= 1;
for i:= 1 to n do
begin
if a[i] > 0 then
begin
inc(kolPol);
sum:= sum + a[i];
end;
if a[i] > 0 then
begin
inc(kolOtr);
p:= p * a[i];
end;
end;
writeln('Количество положительных элементов: ',kolPol);
writeln('Сумма положительных элементов: ',sum);
writeln('Количество отрицательных элементов: ',kolOtr);
writeln('Произведение отрицательных элементов: ',p);
i:= 1; p:= 1; ch:= 0;
while (a[i] >= 0) and (i <> n+1) do
begin
p:= p * a[i];
inc(ch);
inc(i);
end;
if ch <> 0 then
writeln('Произведение до первого отрицательного элемента: ',p)
else
writeln('Первый элемент массива отрицательный!');
for i:= 1 to n-1 do
for j:= 1 to n-i do
if a[j] > a[j+1] then
begin
k:= a[j];
a[j]:= a[j+1];
a[j+1]:= k;
end;
writeln('Массив отсортирован по возрастанию:');
for i:= 1 to n do
write(a[i],' ');
end.