• Написать программу на Pascal использую процедуры и функции

    1. Вычислить сумму элементов массива, расположенных между первым
    и последним положительными элементами.
    2. Преобразовать массив таким образом, чтобы сначала располагались
    элементы, равные 0, а затем – остальные

Ответы 2

  • Современный Паскаль позволяет написать данную задачу короче в десять (!) раз. Не говоря о том, что вероятность допустить ошибку снижается также в десятки раз.
  • const  nn=100; // максимальный размер массиваtype  tA=array[1..nn] of integer;procedure FillArray(n:integer; var a:tA);var  i:integer;begin  Randomize;  for i:=1 to n do a[i]:=Random(21)-10end;procedure PrintArray(n:integer; a:tA);var  i:integer;begin  for i:=1 to n do Write(a[i],' ');  Writelnend;function PartSum(n:integer; a:tA):integer;var  i,i1,i2,s:integer;begin  i:=1;  while (a[i]<=0) and (i<=n) do i:=i+1;  if i>n then begin    PartSum:=0;    exit    end;  i1:=i+1;  i:=n;  while (i>i1) and (a[i]<=0) do i:=i-1;  i2:=i-1;  if i2<=i1 then PartSum:=0  else begin    s:=0;    for i:=i1 to i2 do s:=s+a[i]    end;    PartSum:=s   end;procedure SwapZeros(n:integer; var a:tA);var  i,j:integer;begin  for i:=1 to n do    if a[i]=0 then begin      for j:=i downto 2 do a[j]:=a[j-1];      a[1]:=0;      end;end;var  n:integer;  a:tA;begin  Write('n= '); Read(n);  FillArray(n,a);  PrintArray(n,a);  Writeln('S=',PartSum(n,a));  SwapZeros(n,a);  PrintArray(n,a)end.Примерn= 21-3 1 4 -2 10 -5 -7 7 -5 -10 -2 5 0 -6 3 5 -7 0 -9 6 4 S=-130 0 -3 1 4 -2 10 -5 -7 7 -5 -10 -2 5 -6 3 5 -7 -9 6 4 В качестве бонуса - современное решение без всех этих долгописаний.// PascalABC.NET 3.3, сборка 1634 от 14.02.2018// Внимание! Если программа не работает, обновите версию!begin  var a:=ArrRandom(ReadInteger('n='),-10,10); a.Println;  var i:=a.IndexesOf(t->t>0);  Writeln('S=',a[i.First+1:i.Last].Sum);  a:=(a.Where(t->t=0)+a.Where(t->t<>0)).ToArray; a.Printlnend.
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years