IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Ссылка не указывает на экземпляр объекта
TOPEHTO
сообщение 20.02.2015 13:47
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 87
Пол: Мужской

Репутация: -  0  +


Цитата
var a: array of integer;
n,i,j,b: integer;
procedure input (a: array of integer);
var
i,n: integer;
begin
readln(n);
for i:=1 to n do
readln (a[i]);
end;
procedure swap(var a,b,c: integer);
begin
b:=c;
c:=a;
a:=b;
end;
begin
input(a);
for j:=1 to n-1 do
for i:=1 to n-j do
begin
if a[i] < a[i+1] then
swap(a[i+1], b, a[i]);
end;
writeln(a[n], ' - наименьшее');
writeln(a[1], ' - наибольшее');
end.


Вылетает на 9 строке на вводе

Форум читал, ссылки видел. Но не могу понять почему не работает, точно такая же процедура работала в другой программе.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Федосеев Павел
сообщение 20.02.2015 18:43
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 298
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  8  +


Если это FPC или Delphi, то перед использованием массива нужно выделить ему место в памяти SetLength(a, n).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TOPEHTO
сообщение 24.02.2015 9:28
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 87
Пол: Мужской

Репутация: -  0  +


это Паскаль АБС
просто раньше все работало а теперь ошибка
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
zhdanow5a
сообщение 24.02.2015 10:38
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской

Репутация: -  0  +


Советую массив задать через type ( в начале кода) . тогда возможно разрешится проблема.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Федосеев Павел
сообщение 24.02.2015 17:57
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 298
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  8  +


или выделить память под массив SetLength
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TOPEHTO
сообщение 25.02.2015 8:23
Сообщение #6


Пионер
**

Группа: Пользователи
Сообщений: 87
Пол: Мужской

Репутация: -  0  +


Цитата
type
mas=array of integer;

var a: array of integer;
n,i,j,b: integer;
procedure input (a: mas);
var
i,n: integer;
begin
SetLength(a, 5);
readln(n);
for i:=1 to n do
readln (a[i]);
end;
procedure swap(var a,b,c: integer);
begin
b:=c;
c:=a;
a:=b;
end;
begin
input(a);
for j:=1 to n-1 do
for i:=1 to n-j do
begin
if a[i] < a[i+1] then
swap(a[i+1], b, a[i]);
end;
writeln(a[n], ' - наименьшее');
writeln(a[1], ' - наибольшее');
end.


Теперь тут ругается.
А что случилось? Почему раньше все работало, а теперь понадобились динамические массивы?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TOPEHTO
сообщение 25.02.2015 8:23
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 87
Пол: Мужской

Репутация: -  0  +


Цитата
type
mas=array of integer;

var a: array of integer;
n,i,j,b: integer;
procedure input (a: mas);
var
i,n: integer;
begin
SetLength(a, 5);
readln(n);
for i:=1 to n do
readln (a[i]);
end;
procedure swap(var a,b,c: integer);
begin
b:=c;
c:=a;
a:=b;
end;
begin
input(a);
for j:=1 to n-1 do
for i:=1 to n-j do
begin
if a[i] < a[i+1] then
swap(a[i+1], b, a[i]);
end;
writeln(a[n], ' - наименьшее');
writeln(a[1], ' - наибольшее');
end.


Теперь тут ругается.
А что случилось? Почему раньше все работало, а теперь понадобились динамические массивы?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Федосеев Павел
сообщение 25.02.2015 16:24
Сообщение #8


Бывалый
***

Группа: Пользователи
Сообщений: 298
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  8  +


1. Покажи, что такое раньше.
2. procedure input (a: mas); - где var?
3. Глобальная (sic!) одноимённая (sic!) переменная a - тоже можно причислить к недостаткам, за которые во времена "1001 ночи" на Востоке отрубали руки.

Начни рефакторинг кода с избавления от глобальных переменных.

И если не сложно, реагируй по-чаще - я уже слишком стар и могу не дожить до рабочего состояния твоего кода.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 27.04.2024 22:08
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"