Решить срочно за 100 баллов 111111111111111111

0 голосов
38 просмотров

Решить срочно за 100 баллов
111111111111111111


image

Информатика (383 баллов) | 38 просмотров
Дано ответов: 2
0 голосов
Правильный ответ
// PascalABC.NET 3.3, сборка 1627 от 27.01.2018
// Внимание! Если программа не работает, обновите версию!

begin
  var n:=ReadInteger('n=');
  var a:=ArrRandom(n,-50,50); a.Println;
  var (imax,half):=(a.IndexMax,n div 2);
  if n.IsEven then // все хорошо
    if imax>=half then begin
      var sn:=a[half:].Where(t->t<0).Sum;<br>      if sn=0 then Writeln('Во второй половине вектора нет отрицательных')
      else Writeln('Сумма равна ',sn)
      end
    else Writeln('Среднее арифметическое равно ',a[:half].Average)
  else // не учитывать средний
    if imax=half then
      Writeln('Максимальный элемент попал в неучитываемую точку')
    else
      if imax>half then begin
        var sn:=a[half+1:].Where(t->t<0).Sum;<br>        if sn=0 then Writeln('Во второй половине вектора нет отрицательных')
        else Writeln('Сумма равна ',sn)
        end
      else Writeln('Среднее арифметическое равно ',a[:half].Average)
end.
(150k баллов)
0 голосов

Var
i,cnt,n,max,maxi,sum: integer;
a: array [1..50] of integer;
begin
Readln(n);
For i:= 1 to n do
  Read(a[i]);
max:=a[1];maxi:=1;
for i:= 2 to n do
  if a[i]> max then
  begin
    max:=a[i];
    maxi:=i;
  end;
if maxi > (n div 2 + n mod 2) then
   begin
    for i:= (n div 2 + n mod 2)+1 to n do
      if a[i] < 0 then sum:= sum + a[i];
    if sum = 0 then Writeln('Отрицательных чисел во второй половине нет!')
    else Writeln(sum);
    halt;
   end;
 for i:= 1 to (n div 2) do
  sum:= sum + a[i];
Writeln('Среднее: ', sum/(n div 2));
end.

(8.8k баллов)
0

а где сказано, что мы ее отбрасываем при поиске максимума?

0

фуф, ну не пугайте так больше, а то меня чуть инфарк не хватил, столько кода переписывать

0

"Если мы середину никуда"... это доп.условие я думаю

0

даже голову морочить не надо