Дариа9636
24.07.2020 10:01

Скласти алгоритм обчислення у вигляді блок схеми (30+5)•10-10•3​

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
pallnash
10.08.2022 16:10
 // 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.
0,0(0 оценок)
Ответ:
lllJenyalll
30.09.2021 03:44
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!

unit ASM;

interface

  type SF=(integer,integer);
  function AddSF(a,b:SF):SF;
  function SubSF(a,b:SF):SF;
  function MultSF(a,b:SF):SF;
  function DivSF(a,b:SF):SF;
 
implementation
 
  function Gcd(p:SF):integer;
  begin
    (var a,var b):=p;
    a:=abs(a); b:=abs(b);
    while b>0 do (a,b):=(b,a mod b);
    Result:=a
  end;
 
  function ReductSF(p:SF):SF;
  begin
    var t:=Gcd(p);
    if t>1 then Result:=(p[0] div t,p[1] div t)
    else Result:=p
  end;
 
  function AddSF(a,b:SF):=ReductSF((a[0]*b[1]+a[1]*b[0],a[1]*b[1]));
 
  function SubSF(a,b:SF):=ReductSF((a[0]*b[1]-a[1]*b[0],a[1]*b[1]));

  function MultSF(a,b:SF):=ReductSF((a[0]*b[0],a[1]*b[1]));
    
  function DivSF(a,b:SF):=ReductSF((a[0]*b[1],a[1]*b[0]));
 
end.

Пример работы с модулем

uses ASM;

begin
  var a:=(5,24);
  var b:=(7,8);
  var c:=AddSF(a,b);
  Writeln(a[0],'/',a[1],'+',b[0],'/',b[1],'=',c[0],'/',c[1])
end.

Результат

5/24+7/8=13/12
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота