Ссылка не указывает на экземпляр объекта |
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 строке на вводе Форум читал, ссылки видел. Но не могу понять почему не работает, точно такая же процедура работала в другой программе. |
Федосеев Павел |
20.02.2015 18:43
Сообщение
#2
|
Бывалый Группа: Пользователи Сообщений: 298 Пол: Мужской Реальное имя: Федосеев Павел Репутация: 8 |
Если это FPC или Delphi, то перед использованием массива нужно выделить ему место в памяти SetLength(a, n).
|
TOPEHTO |
24.02.2015 9:28
Сообщение
#3
|
Пионер Группа: Пользователи Сообщений: 87 Пол: Мужской Репутация: 0 |
это Паскаль АБС
просто раньше все работало а теперь ошибка |
zhdanow5a |
24.02.2015 10:38
Сообщение
#4
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
Советую массив задать через type ( в начале кода) . тогда возможно разрешится проблема.
|
Федосеев Павел |
24.02.2015 17:57
Сообщение
#5
|
Бывалый Группа: Пользователи Сообщений: 298 Пол: Мужской Реальное имя: Федосеев Павел Репутация: 8 |
или выделить память под массив SetLength
|
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. Теперь тут ругается. А что случилось? Почему раньше все работало, а теперь понадобились динамические массивы? |
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. Теперь тут ругается. А что случилось? Почему раньше все работало, а теперь понадобились динамические массивы? |
Федосеев Павел |
25.02.2015 16:24
Сообщение
#8
|
Бывалый Группа: Пользователи Сообщений: 298 Пол: Мужской Реальное имя: Федосеев Павел Репутация: 8 |
1. Покажи, что такое раньше.
2. procedure input (a: mas); - где var? 3. Глобальная (sic!) одноимённая (sic!) переменная a - тоже можно причислить к недостаткам, за которые во времена "1001 ночи" на Востоке отрубали руки. Начни рефакторинг кода с избавления от глобальных переменных. И если не сложно, реагируй по-чаще - я уже слишком стар и могу не дожить до рабочего состояния твоего кода. |
Текстовая версия | 28.09.2024 4:13 |