<em>Проверено на fpc 3.0.0 </em>
const
m=6; // строк
n=9; // столбцов
var
a:array[1..m,1..n] of integer;
i,j,k1,k2,s,k:integer;
begin
Writeln('Введите границы диапазона: '); Read(k1,k2);
Randomize;
s:=0; k:=0;
for i:=1 to m do begin
for j:=1 to n do begin
a[i,j]:=Random(199)-99; // [-99;99]
Write(a[i,j]:4);
if (a[i,j]>=k1) and (a[i,j]<=k2) then begin
Inc(k); s:=s+a[i,j]
end
end;
Writeln
end;
Writeln('Отобрано элементов: ',k,', их сумма равна ',s)
end.
<u>Пример</u>
Введите границы диапазона:
-20 55
-2 -52 -11 -12 70 -15 90 -51 75
-54 -92 32 54 -72 -24 -40 -37 -20
0 -14 -79 -1 -39 -34 39 47 34
-91 -98 -68 -16 -56 -55 97 66 59
-48 -67 -34 92 -77 12 -67 -23 -90
75 85 65 -98 -58 -53 -6 34 33
Отобрано элементов: 18, их сумма равна 188
Тернарный оператор должен возвращать значение (или ссылку на переменную), которое потом можно использовать. Например, если в целочисленной переменной a записано число -3, то используя такой синтаксис:
int absa = a >= 0 ? a : -a;
можно присвоить переменной absa значение |-3| = 3.
Выражения break, continue (и, например, return) управляют выполнением программы, показывая, какую инструкцию выполнять следующей, и не возвращают никакого значения (даже void). Поэтому при попытке использовать такие выражения в качестве аргументов тернарного оператора, ожидающего, что оба аргумента вернут какое-то значение, возникает ошибка компиляции.
Если очень хочется использовать тернарный оператор для выхода из цикла (но зачем?) можно выбрасывать исключение, которое потом обрабатывать, например, так:
try {
int a = 5;
while(true) {
a == 0 ? throw "a equals 0" : (void) 0;
a--;
}
} catch (<span>char const*</span> s) {
if (s != "a equals 0") throw s;
};
Для начала складываем 4+8 и получаем 12 или по 5 горшков.
А потом меняем большие горшки на маленькие.
Один большой равен двум маленьким и наоборот два маленьких равны одному большому.
P.S.:ну во как-то так.думаю что ты поймешь)))