ОМ ИНФОРМАТИКА Программирование условий. Урок 2 4)0<=spot[0]<=50 and 0<=spot[1]<=50 x-50<=spot[0]<=x+50 and y-50<=spot[1]<=y+50 x<=spot[0]<=x+50 and y<=spot[1]<=y+20 spot[0]=х+50 and spot[1]<=у+50
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 понимает только 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.
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.
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.