Cклавиатуры заполнен массив из 30 элементов. составьте фрагмент программы для решения следующих : 1.найти количество четных чисел.для проверки использовать подпрограмму. 2.найти среднее арифметическое двузначных чисел кратных 3, но не кратных 9. в случае если таких элементов нет вывести на экран -1. 3.найти наибольшую длину цепочки четных элементов массива. 4. удалить элемент массива и сдвинуть оставшиеся элементы. номер удаляемого элемента вводится с клавиатуры. 5.вывести на экран второй максимум массива

юка28 юка28    2   24.09.2019 19:20    0

Ответы
DenKovYa DenKovYa  08.10.2020 16:23
PascalABC.NET 3.3.5, сборка 1662 от 29.04.2018
Внимание! Если программа не работает, обновите версию!

begin
  var a:=ReadArrInteger(30);
  Writeln('1. Количество четных ',a.Where(t->t.IsEven).Count);
  var s:=a.Where(t->(t mod 3=0) and (t mod 9<>0) and t.Between(10,99));
  Write('2. Мудреное среднее арифметическое ');
  if s.Count=0 then Writeln(-1) else Writeln(s.Average);
  Write('3. Наибольшая длина цепочки четных элементов ');
  var (l,l1):=(-1,0);
  foreach var t in a do
    if t.IsEven then l1+=1
    else begin
      l:=Max(l,l1);
      l1:=0
      end;
  Writeln(l);
  var k:=ReadInteger('4. Номер удаляемого элемента (1-30):')-1;
  Writeln('Массив после удаления элемента');
  a:=a?[:k]+a?[k+1:]; a.Println;
  Write('5. Второй максимум ');
  a.OrderByDescending(t->t).Skip(1).Take(1).Println
end.

Пример
40 -116 91 -47 14 -10 -88 81 92 -106 121 133 -49 69 50 -60 49 57 30 49 60 106 -94 50 -32 -52 -60 -96 148 -49
1. Количество четных 19
2. Мудреное среднее арифметическое 54
3. Наибольшая длина цепочки четных элементов 9
4. Номер удаляемого элемента (1-30): 7
Массив после удаления элемента
40 -116 91 -47 14 -10 81 92 -106 121 133 -49 69 50 -60 49 57 30 49 60 106 -94 50 -32 -52 -60 -96 148 -49
5. Второй максимум 133
ПОКАЗАТЬ ОТВЕТЫ
ЛизаХлеб ЛизаХлеб  08.10.2020 16:23
Program aaa;
type   
   t=array[1..30] of integer;
var   
   a:t;   
   i,h,max,max1,y:integer;   
   q,c:real;
procedure chet(a:t);   
   var     
      i,z:integer;   
   begin     
      z:=0;     
      for i:=1 to 30 do         
      if(odd(a[i])=false) then inc(z);     
      writeln(z);   
   end;
begin   
   for i:=1 to 30 do     
      read(a[i]);   
   //1   
   chet(a);   
   //2   
   h:=0;   
   c:=0;   
   for i:=1 to 30 do     
      if((a[i] mod 3 = 0) and (a[i] mod 9 <> 0) and (a[i]>9) and (a[i]<100)) then begin                 inc(h);     
         c:=c+a[i];   
      end;   
   if(h=0) then writeln(-1)     
    else writeln(c/h);   
   //3   
   h:=0;   
   max:=0;   
   for i:=1 to 30 do begin     
      if((odd(a[i])=false) and (y=0)) then begin           
         h:=i;           
         y:=1;           
         continue;     
      end;     
      if((y>0) and ((odd(a[i])=false))) then          
         inc(y)       
       else         
        if(y>max) then begin           
           max:=y;           
           max1:=h;           
           y:=0;         
       end           
        else y:=0;   
   end;   
   for i:=max1 to max+max1-1 do     
      write(a[i],' ');   
   writeln;   
   //4   
   readln(h);   
   y:=a[h];   
   for  i:=h to 29 do     
      a[i]:=a[i+1];   
   for i:=1 to 29 do     
      write(a[i],' ');   
   for i:=29 downto h do     
      a[i+1]:=a[i];   
   a[h]:=y;   
   writeln;   
   //5   
   max:=0;   
   max1:=0;   
   for i:=1 to 30 do begin     
      if(a[i]>max) then begin         
         max1:=max;         
         max:=a[i];     
      end;     
      if((a[i]>max1) and (a[i]<max)) then          
         max1:=a[i];   
   end;   
   writeln(max1);
end.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика