Const n=15;
<span>var i,k,mn,indm,sm: integer;
</span><span> a: array[1..n] of integer;
</span><span> sar: real;
</span><span>begin
</span><span> randomize;
</span><span> writeln('исходный массив:');
</span><span> mn:=n; sm:=0;
</span><span> k:=1;
</span><span> for i:=1 to n do
</span><span> begin
</span><span> a[i]:=random(-n,n);
</span><span> sm:=sm+a[i];
</span><span> write(a[i],' ');
</span><span> if a[i]=mn then k:=k+1;
</span><span> if a[i]<mn then
</span><span> begin
</span><span> mn:=a[i];
</span><span> indm:=i;
</span><span> k:=1;
</span><span> end;
</span><span> end;
</span><span> writeln;
</span><span> writeln('минимальный элемент: ',mn,' индекс: ',indm);
</span><span> sm:=sm-a[indm]*k;
</span><span> writeln('сумма элементов без минимального: ',sm);
</span><span> sar:=sm/(n-k);
</span><span> writeln('среднее арифметическое: ',sar:7:3);
</span><span>end.
</span>исходный массив:
<span>-1 6 -12 -14 14 -14 10 -9 -2 -6 9 -1 -13 13 -2
</span><span>минимальный элемент: -14 индекс: 4
</span><span>сумма элементов без минимального: 6
</span><span>среднее арифметическое: 0.462
</span>
40*1024=40960байт,,,,,,,,,,,,,,,,,,,,,,,,,,,,
//PascalABC.NET
//Версия 3.3. сборка 1583 (25.11.2017)
var
n:integer;
a:array[1..100] of integer;
begin
write('Введите размер массива (n<100): ');readln(n);
var max:=0;
var min:=101;
for var i:=1 to n do
begin
a[i]:=random(0,100);
write(a[i],' ');
if i mod 2=1 then
if a[i]>max then max:=a[i]
else
if a[i]<min then min:=a[i];
end;
writeln;
writeln('Максимальный - ',max);
writeln('Минимальный - ',min);
writeln('Cумма максимального и минимального - ',max+min);
readln;
end.
Пример:
Введите размер массива (n<100): 10
22 6 51 84 46 66 10 36 14 52 // рандомная генерация
Максимальный - 51
Минимальный - 10
Cумма максимального и минимального - 61
??? это как?
в-е-н-т-и-л-я-ц-и-я
Тернарный оператор должен возвращать значение (или ссылку на переменную), которое потом можно использовать. Например, если в целочисленной переменной 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;
};