В функцию sort не передается значения массива из другой функции - Pascal

Узнай цену своей работы

Формулировка задачи:

Подскажите пжлст почему в процедуру sort не передаются значения массива из процедуры vyb
var
  z: integer;
 
const
  n = 1000;
 
type
  mas = array [1..n] of real;
 
var
  a: mas;
  b: mas;
 
procedure vyb(var a: mas);
var
  i, n1: integer;
 
begin
  writeln('vvedite kolichestvo chisel, kotoroe budet v massive');
  readln(n1);
  writeln('vvedite chisla, posle kazhdogo chisla nazhav enter');
  for i := 1 to n1 do
  begin
    readln(a[i]);
  end;
  writeln('vvedyenyi massiv');
  for i := 1 to n1 do
    write(a[i], ' ');
  writeln;
end;
 
procedure vvod(var z: integer);
var
  b: mas;
begin
  repeat
    begin
      readln(z);
      case z of
        1: vyb(b);
        2: 
          begin
            writeln('программа будет закрыта');
            halt;
          end;
      else 
        begin
          writeln('введите правильное число 1 или 2');
          z := 0;
        end;
      end;
    end;
  until (z = 1);
end;
 
procedure sort(var a: mas);
var
  i, j, n1: integer;
  tmp: real;
begin
  tmp := 0;
  for i := 1 to n1 do 
  begin
    for j := 1 to n1 - 1 do 
    begin
      writeln('a[j]=', a[j], ' ');
      if a[j] > a[j + 1] then begin
        tmp := a[j];
        a[j] := a[j + 1];
        a[j + 1] := tmp;
      end;
    end;
  end;
  if tmp <> 0 then
    writeln('отсортированное множество по возрастанию');
  for i := 1 to n1 do write(a[i], ' ');
end;

begin
  writeln('vvedite deistvie s klaviatury nazhav sootvetstvuyshuy cifru: 1 - vvod mnozhestva, 2 - vyhod iz programmy');
  vvod(z);
  writeln;
  sort(b);
  writeln;
end.

Решение задачи: «В функцию sort не передается значения массива из другой функции»

textual
Листинг программы
{основная программа, глобальные переменные}
var
  b: mas;
...
procedure vvod(var z: integer);
var b: mas; { это отдельный локальный массив b, а не глобальный массив b }
{ Глобальный массив b здесь и далее до конца процедуры не виден }
{ все обращения к b -- это обращения к локальной b }

Объяснение кода листинга программы

  1. В файле объявлены глобальные переменные, включая массив b.
  2. Начинается описание процедуры vvod, которая принимает переменную z по ссылке.
  3. Внутри процедуры объявляется локальный массив b, который независим от глобального массива b.
  4. Внутри процедуры все обращения к b будут относиться к локальному массиву b, а не к глобальному массиву b.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы