Напишите программу которая находит максимальный и минимальный из чётных пложителных элементов массива. если в массиве нет чётных положительных элементов, нужно вывести сообщение об этом. по информатика с ответам
// PascalABC.NET 3.1, сборка 1256 от 21.06.2016 begin var a:=ArrRandom(ReadInteger('n='),-99,99); a.Println; var b:=a.Where(x->(x>0) and x.IsEven); if b.Count=0 then Writeln('Нет четных положительных элементов') else Writeln('Min=',b.Min,', max=',b.Max) end.
//"Школьный" вариант //Pascal ABC.NET 3.1 сборка 1256
Const n=10;
Var ar:array[1..n] of integer; i,max,min:integer; b:boolean; begin randomize; b:=false; max:=integer.MinValue; min:=integer.MaxValue; writeln('Array:'); for i:=1 to n do begin ar[i]:=random(-100,100); if (ar[i]>max) and not(odd(ar[i])) and (ar[i]>0) then begin max:=ar[i]; b:=true; end; if (ar[i]<min) and not(odd(ar[i])) and (ar[i]>0) then begin min:=ar[i]; b:=true; end; write(ar[i]:4); end; writeln; if b=false then writeln('Нет удовлетворяющих условиям чисел') else begin writeln('Max=',max); writeln('Min=',min); end; end.
Пример работы программы: Array: 98 60 -41 -88 63 -81 -77 -96 -18 51 Max=98 Min=60
Сначала смотрим на то, что происходит в цикле с переменной а. К ней добавляются по 2 единицы за шаг цикла. Так как программа выводит значение а, равное 4, делаем вывод, что цикл повторится 2 раза. Далее посмотрим на условие окончания. Цикл с предусловием while будет выполниться, пока x больше 0, а в самом цикле происходит целочислительное деление x на 1000, что означает "отщепление" от числа по 3 цифры младших разрядов. Из этого следует, что число должно иметь как минимум 4 цифры, чтобы цикл повторился 2 раза. Значение b должно быть равно 13. 13 - простое число. Следовательно, равно 1*13. Поставим 13 в левый конец числа, а 1 - в правый. Третий и второй знаки будут равны 0. Таким образом получим число 13001. ответ: 13001
Var ar:array[1..n] of integer; k,i,c:integer; begin randomize; writeln('First array:'); for i:=1 to n do begin ar[i]:=random(9); write(ar[i]:4); end; writeln; write('Enter index:'); readln(k); if (k=1) or (n=1) then begin writeln('Mwahahahaha(no)'); exit; end; c:=ar[k+1]; ar[k+1]:=ar[k-1]; ar[k-1]:=c; writeln('Final array:'); for i:=1 to n do write(ar[i]:4); end.
Пример работы программы: First array: 1 8 4 2 8 5 8 7 1 8 Enter index:3 Final array: 1 2 4 8 8 5 8 7 1 8
begin
var a:=ArrRandom(ReadInteger('n='),-99,99); a.Println;
var b:=a.Where(x->(x>0) and x.IsEven);
if b.Count=0 then Writeln('Нет четных положительных элементов')
else Writeln('Min=',b.Min,', max=',b.Max)
end.
Тестовое решение
n= 17
-11 15 46 -69 27 -26 68 -48 -2 9 17 7 -86 75 -58 -45 -52
Min=46, max=68