Дан массив l[9]. найти сумму отрицательных элементов массива, расположенных между максимальным элементом и минимальным элементом. (язык программирования delphi)
Консольное приложение: const n=9; var l:array[1..n] of integer; i,max,imax,min,imin,s:integer; begin Randomize; writeln('Массив L:'); for i:=1 to n do begin l[i]:=random(51); write(l[i]:4); end; writeln; max:=l[1]; imax:=1; min:=l[1]; imin:=1; for i:=2 to n do begin if l[i]>max then begin max:=l[i]; imax:=i; end; if l[i]<min then begin min:=l[i]; imin:=i; end; end; writeln('max = l[',imax,'] = ',max); writeln('min = l[',imin,'] = ',min); s:=0; if imax>imin then for i:=imin+1 to imax-1 do s:=s+l[i] else for i:=imax+1 to imin-1 do s:=s+l[i]; writeln('s = ',s); end.
Пример: Массив L: 31 49 41 15 9 47 37 11 27 max = l[2] = 49 min = l[5] = 9 s = 56
lebedev815
07.09.2022
Крутить это все в уме - чистое наказание. Проще было написать программу.
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017 // Внимание! Если программа не работает, обновите версию!
type Pinnacle=record St:Stack<integer>; No:integer; constructor (n:integer); begin St:=new Stack<integer>; No:=n end; end;
var MoveNo:integer;
procedure MoveDisk(s1,s2:Pinnacle); begin if s1.St.Count>0 then begin MoveNo+=1; s2.St.Push(s1.St.Pop); Writeln(MoveNo:3,': №',s2.St.Peek,' ',s1.No,' -> ',s2.No) end end;
procedure MovePinnacle(n:integer; s1,s2,s3:Pinnacle); begin if n=0 then exit; MovePinnacle(n-1,s1,s3,s2); MoveDisk(s1,s2); MovePinnacle(n-1,s3,s2,s1); end;
begin var n:=5; var p1:=new Pinnacle(1); var p2:=new Pinnacle(2); var p3:=new Pinnacle(3); Range(n,1,-1).ForEach(i->p2.St.Push(i)); MoveNo:=0; MovePinnacle(n,p2,p3,p1); end.
Иллюстрация первых пяти шагов приведена во вложении.
Sergeevich-Drugov1513
07.09.2022
Составим уравнение Воспользуемся расширенной записью числа 87=an²+bn+2 → an²+bn-85=0 Известно, что если многочлен с целочисленными коэффициентами имеет хотя бы один вещественный корень, то он находится среди делителей свободного члена. Нас интересуют только натуральные делители, большие 2, поскольку n - основание системы счисления и в этой системе имеется цифра 2. 85 = 5 × 17. Число 17 не подходит, потому что 17>10 и двухзначное десятичное число в системе счисления с основанием, большим 10, не может иметь в записи больше двух знаков. Следовательно, n=5.
Для проверки переводим 87 в систему счисления по основанию 5. 87 / 5 = 17, остаток 2 17 / 5 = 3, остаток 2 3 / 5 = 0, остаток 3. Выписываем остатки в обратном порядке: 322 87₁₀ = 322₅ - в числе три разряда и оно оканчивается двойкой.
const n=9;
var l:array[1..n] of integer;
i,max,imax,min,imin,s:integer;
begin
Randomize;
writeln('Массив L:');
for i:=1 to n do
begin
l[i]:=random(51);
write(l[i]:4);
end;
writeln;
max:=l[1]; imax:=1;
min:=l[1]; imin:=1;
for i:=2 to n do
begin
if l[i]>max then begin max:=l[i]; imax:=i; end;
if l[i]<min then begin min:=l[i]; imin:=i; end;
end;
writeln('max = l[',imax,'] = ',max);
writeln('min = l[',imin,'] = ',min);
s:=0;
if imax>imin
then for i:=imin+1 to imax-1 do s:=s+l[i]
else for i:=imax+1 to imin-1 do s:=s+l[i];
writeln('s = ',s);
end.
Пример:
Массив L:
31 49 41 15 9 47 37 11 27
max = l[2] = 49
min = l[5] = 9
s = 56