Основы алгоритмизации и программирования. Часть третья. Структурированные типы данных. Асламова В.С - 7 стр.

UptoLike

13
writeln (сумма цифр целого числа ,i:6, = ,S:4);
writeln (количество цифр в числе= , K:4);
end; end.
Пример
2:
Из массива а получить массив b путем циклического сдвига
элементов массива вправо на одну позицию.
В виде процедур можно оформлять ввод и вывод массивов. В этом
случае массивы следует передавать по ссылке, тогда если изменяется
формальный массив, то изменяется и фактический массив. Кроме того,
передача массива по ссылке требует меньше памяти.
При
использовании массива в качестве формального параметра
процедуры или функции его тип должен быть описан в разделе TYPE.
program massiv;
coust n=20;
type mas=array [1..n] of real;
var a,b:mass;
procedure masread (var x:mas); {процедура ввода}
var i:integer;
begin
writeln(введите , n , чисел);
for i:=1 to n do read (x[i]);
end;
procedure maswrite(var x:mas); {процедура печати массива}
var i:integer;
begin
for i:=1 to n do write (x[i]:8:3);
writeln;
end;
procedure rechtshift (var x:mas); {сдвиг влево на 1 позицию}
var i:integer; c:real;
begin
c:=x[n];
for i:=n downto 2 do x[i]:=x[i-1];
x[1]:=c;
end;
begin (*основная программа*)
masread(a); {ввод массива а}
b:=a; {содержимое массива копируется в массив b}
writeln(массив перед сдвигом вправо);
maswrite(b); {печать массива b}
rechtshift(b); {сдвиг массива b}
14
maswrite(b); {массив после сдвига
вправо}
end.
Пример
3:
Даны три массива целого типа: массив А, состоящий из 20 элементов,
В - из 15, С - из 10. Определить, в каком массиве больше нулевых элементов.
Подсчёт нулевых элементов оформить в виде процедуры.
Если фактическим параметром при различных вызовах процедур и
функций являются массивы с разными размерностями, то тип массива нужно
описывать по максимальной размерности и
дополнительно передавать в
подпрограмму количество элементов обрабатываемого массива.
type mas=array [1..20] of integer;
var A, B, C:mass;
ka, kb, kc:byte; {ka, kb, kc количество нулевых
элементов в массивах А, В, С}
Procedure COL(var A:mass; n:byte; var k:byte);
var i:byte;
begin
writeln (ввод , n, элементов); k:=0;
for i:=1 to n do
begin
read (A[i]); if A[i]=0 then k:=k+1
end; end;
begin {основная программа}
COL (A,20,ka);
writeln (в массиве А , ka, нулевых элементов);
COL (B,15,kb);
writeln (в массиве В , kb, нулевых элементов);
COL (C,10,kc);
writeln (в массиве
С ,kc, нулевых элементов);
if(ka=kb) and (kb=kc) then begin
writeln (одинаковое число нулевых элементов);
exit end;
if (ka>=kb) and (ka>=kc) then
writeln (в массиве А нулей больше);
if (kb>=ka) and (kb>=kc) then
writeln (в массиве В нулей больше);
if (kc>=ka) and (kc>=kb) then
writeln (в массиве С нулевых элементов больше); end.
               writeln (′сумма цифр целого числа ′,i:6,′ = ′,S:4);                         maswrite(b);                   {массив после сдвига вправо}
               writeln (′количество цифр в числе= ′, K:4);
   end; end.                                                                        end.

      Пример 2:                                                                        Пример 3:
       Из массива а получить массив b путем циклического сдвига                        Даны три массива целого типа: массив А, состоящий из 20 элементов,
элементов массива вправо на одну позицию.                                       В - из 15, С - из 10. Определить, в каком массиве больше нулевых элементов.
      В виде процедур можно оформлять ввод и вывод массивов. В этом             Подсчёт нулевых элементов оформить в виде процедуры.
случае массивы следует передавать по ссылке, тогда если изменяется                     Если фактическим параметром при различных вызовах процедур и
формальный массив, то изменяется и фактический массив. Кроме того,              функций являются массивы с разными размерностями, то тип массива нужно
передача массива по ссылке требует меньше памяти.                               описывать по максимальной размерности и дополнительно передавать в
      При использовании массива в качестве формального параметра                подпрограмму количество элементов обрабатываемого массива.
процедуры или функции его тип должен быть описан в разделе TYPE.
    program massiv;                                                                  type mas=array [1..20] of integer;
    coust n=20;                                                                      var A, B, C:mass;
    type mas=array [1..n] of real;                                                   ka, kb, kc:byte;                   {ka, kb, kc – количество нулевых
    var a,b:mass;                                                                                                       элементов в массивах А, В, С}
    procedure masread (var x:mas);                   {процедура ввода}
    var i:integer;                                                                   Procedure COL(var A:mass; n:byte; var k:byte);
    begin                                                                            var i:byte;
           writeln(′введите ′, n ,′ чисел′);                                         begin
           for i:=1 to n do read (x[i]);                                                   writeln (′ввод ′, n,′ элементов′); k:=0;
    end;                                                                                   for i:=1 to n do
    procedure maswrite(var x:mas);                 {процедура печати массива}              begin
    var i:integer;                                                                             read (A[i]); if A[i]=0 then k:=k+1
    begin                                                                            end; end;
           for i:=1 to n do write (x[i]:8:3);                                        begin                                      {основная программа}
           writeln;                                                                        COL (A,20,ka);
    end;                                                                                   writeln (′в массиве А ′, ka,′ нулевых элементов′);
    procedure rechtshift (var x:mas);              {сдвиг влево на 1 позицию}              COL (B,15,kb);
    var i:integer; c:real;                                                                 writeln (′в массиве В ′, kb,′ нулевых элементов′);
    begin                                                                                  COL (C,10,kc);
           c:=x[n];                                                                        writeln (′в массиве С ′,kc,′ нулевых элементов′);
           for i:=n downto 2 do x[i]:=x[i-1];                                              if(ka=kb) and (kb=kc) then begin
           x[1]:=c;                                                                           writeln (′одинаковое число нулевых элементов′);
    end;                                                                                      exit end;
    begin                                   (*основная программа*)                         if (ka>=kb) and (ka>=kc) then
           masread(a);                             {ввод массива а}                        writeln (′в массиве А нулей больше′);
           b:=a;                  {содержимое массива копируется в массив b}               if (kb>=ka) and (kb>=kc) then
           writeln(′массив перед сдвигом вправо′);                                         writeln (′в массиве В нулей больше′);
           maswrite(b);                        {печать массива b}                          if (kc>=ka) and (kc>=kb) then
           rechtshift(b);                      {сдвиг массива b}                           writeln (′в массиве С нулевых элементов больше′); end.
                                           13                                                                              14