Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2017, 21:47   #1
jipumex@cartelera.
Пользователь
 
Регистрация: 05.10.2016
Сообщений: 12
По умолчанию [Pascal] Ошибка времени выполнения: Ссылка на объект не указывает на экземпляр объекта.

Код:
var
  a: array of integer;

var
  b, c: array of integer;
  i, j, k, l, n1, n2, n3, x: integer;

procedure karm(x,y,z: array of integer);
var
  i, j, l, n2, n3: integer;
begin
  for i := 0 to x.length - 1 do
  begin
    if x[i] < 30 then 
    begin
      setlength(y, n2 + 1);
      y[j] := x[i];
      if x[i] >= 30 then 
      begin
        setlength(z, n3 + 1);
        z[k] := x[i];
      end;
    end;
  end;
end;

begin
  n2 := 0;n3 := 0;
  j := 1;k := 1;
  writeln('Задайте размер массива a:');readln(n1);
  setlength(a, n1);
  for i := 0 to a.Length - 1 do
    a[i] := random(60);
  writeln;
  karm(a, b, c);
  writeln('Массив a');
  begin
    for i := 0 to a.Length - 1 do
      write(a[i], ' ');
    writeln;
  end;
  writeln('Неотсортированный массив b');
  for j := 1 to j - 1 do
    write(b[j], ' ');
  writeln('Неосортированный массив с');
  for k := 1 to k - 1 do
    write(c[k], ' ');
  begin
    for i := 2 to j do
      for l := j downto i do
        if b[l - 1] > b[l] then
        begin
          x := b[l - 1];
          b[l - 1] := b[l];
          b[l] := x;
        end;
    writeln;
    writeln('Отсортированный массив b');
    for j := 0 to n2 do
      write(b[j], ' ');
  end;
  begin
    for i := 2 to k do
      for l := k downto i do
        if c[l - 1] > c[l] then
        begin
          x := c[l - 1];
          c[l - 1] := c[l];
          c[l] := x;
        end;
    writeln;
    writeln('Отсортированный массив с');
    for l := 1 to k do
      write(c[l], ' ');
  end;
  begin
    
    writeln;
    writeln('отсортированный массив a');
    for i := 1 to 10 do
      a[i] := b[i];
    for i := 1 to 10 do
      a[i + 10] := c[i];
    for i := 1 to 20 do
      write(a[i], ' ');
  end; end.
//////////////////////////////////////////////////

nedodelannaya_karmannaya_sortirovka 1.pas(62) : Ошибка времени выполнения: Ссылка на объект не указывает на экземпляр объекта.

Как можно исправить данную ошибку?



________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 12.04.2017 в 22:05.
jipumex@cartelera. вне форума Ответить с цитированием
Старый 12.04.2017, 22:33   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,538
По умолчанию

1) Создайте тип , например
Код:
type tArr=array of integer;
и используйте его вместо просто array of integer при описании процедур.

2) Забыли волшебное слово var. Без него массивы вернутся из процедуры неизменными.
То есть - так попробуйте.
Код:
type tArr=array of integer;
procedure karm(var x,y,z: tArr);
// и т.д.
PS И еще -
Цитата:
Сообщение от jipumex@cartelera. Посмотреть сообщение
nedodelannaya_karmannaya_sortirovka 1.pas(62) : Ошибка времени ....
Тут никто не станет отсчитывать , где она эта 62-я строка.
Подозреваю, что конструкция типа:
Код:
a.Length
a - это же массив, а не объект или запись. Или в каком-то Паскале и с массивом так можно ?

Последний раз редактировалось type_Oleg; 12.04.2017 в 22:44.
type_Oleg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ссылка на объект не указывает на экземпляр объекта ozazat C# (си шарп) 18 10.04.2016 21:38
ссылка на объект не указывает на экземпляр объекта aliqulu C# (си шарп) 3 16.03.2014 12:17
ссылка на объект не указывает на экземпляр объекта miarida C# (си шарп) 3 27.05.2013 08:28
Ссылка на объект не указывает на экземпляр объекта. Kazbek17 C# (си шарп) 11 08.02.2012 18:56
Ссылка на объект не указывает на экземпляр объекта C++ Юля_ Помощь студентам 2 09.01.2012 16:04