Кто, что сможет. решите, на паскале 2а.1. найти номер первого отрицательного элемента массива. 2а.2. найти значение и номер последнего четного положительного элемента. 2а.3. найти номер второго элемента, кратного 5. 2а.4. сколько положительных чисел между вторым и третьим нулевыми элементами? 2а.5. напечатать номера первых четырех положительных элементов. 2а.6. найти номера первого и последнего отрицательных элементов. 2а.7. сколько четных элементов находится между первым положительным и последним отрицательными элементами.

suminjenya suminjenya    2   20.09.2019 07:00    1

Ответы
WallyMF WallyMF  08.10.2020 04:04
 // PascalABC.NET 3.3, сборка 1634 от 14.02.2018
// Внимание! Если программа не работает, обновите версию!

begin
  var a:=ArrRandom(ReadInteger('n='),-11,11); a.Println;
  // 1
  begin
    var s:=a.Where(t->t<0);
    if s.Count=0 then
      Writeln('1. Нет отрицательных элементов')
    else
      Writeln('1. Первый отрицательный элемент номер ',
          a.IndexOf(s.First)+1)
  end;
  // 2
  begin
    var s:=a.Select((v,i)->(v,i)).Where(t->(t[0]>0) and t[0].IsEven);
    if s.Count=0 then
      Writeln('2. Нет четных положительных элементов')
    else begin
      var r:=s.Last;
      Writeln('2. Последний четный положительный элемент номер ',r[1]+1,
          ', значение ',r[0])
      end
  end;
  // 3
  begin
    var s:=a.Select((v,i)->(v,i)).Where(t->t[0] mod 5=0);
    if s.Count<2 then
      Writeln('3. Нет двух элементов, кратных 5')
    else
      Writeln('3. Номер второго элемента, кратного 5, равен ',
          (s.Skip(1).Take(1)).First[1]+1)
  end;
  // 4
  begin
    var s:=a.Select((v,i)->(v,i)).Where(t->t[0]=0);
    if s.Count<3 then
      Writeln('4. Нет трех нулевых элементов')
    else begin
      s:=s.Skip(1).Take(2);
      Writeln('4. Количество положительных элементов между ',
          'вторым и третьим нулевыми элементами равно ',
          a[s.First[1]+1:s.Last[1]].Where(t->t>0).Count)
      end
  end;    
  // 5
  begin
    var s:=a.IndexesOf(t->t>0).Take(4).Select(t->t+1);
    if s.Count<4 then
      Writeln('5. Нет четырех положительных элементов')
    else begin
      Write('5. Номера первых четырех положительных элементов: ');
      s.Println
      end
  end;
  // 6
  begin
    var s:=a.IndexesOf(t->t<0);
    if s.Count=0 then
      Writeln('6. Нет отрицательных элементов')
    else
      Writeln('6. Номера первого и последнего отрицательных элементов: ',
          s.First+1,' ',s.Last+1)
  end;
  // 7
  begin
    var s:=a.IndexesOf(t->t>0);
    if s.Count=0 then
      Writeln('7. Нет положительных элементов')
    else begin
      var i1:=s.First;
      s:=a.IndexesOf(t->t<0);
      if s.Count=0 then
        Writeln('7. Нет отрицательных элементов')
      else begin
        var i2:=s.Last;
        Writeln('7. Количество четных элементов между первым ',
            'положительным и последним отрицательными элементами: ',
            a?[i1+1:i2].Where(t->t.IsEven).Count)
        end
      end  
  end
end.

Кто, что сможет. решите, на паскале 2а.1. найти номер первого отрицательного элемента массива. 2а.2.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика