Матрица, Сортировка по суме элементов столбцов |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Матрица, Сортировка по суме элементов столбцов |
TS* |
10.12.2006 0:01
Сообщение
#1
|
Пионер Группа: Пользователи Сообщений: 71 Пол: Мужской Реальное имя: Max Репутация: 0 |
Всем добрый вечер. Не компилируеться програмка, зависает на процедуре сумирования элементов столбцов:
|
Алена |
10.12.2006 0:14
Сообщение
#2
|
Гость |
mP[x, f]:=mP[x, f]+mP[y, f];Это ты так пытаешься менять элементы местами? Смысл? Второе - Array of ... индексируется с 0, а не с 1-цы... |
Bokul |
10.12.2006 0:21
Сообщение
#3
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Цитата Не компилируеться програмка, зависает на процедуре сумирования элементов столбцов Ну во-первых, если программа не компилируется, то она и зависнуть не может. Такая пакость происходит только в RunTime, т.е. уже после компиляции и запуска. Во-вторых, ошибка происходит в процедуре perestanovka_st. Ты хочешь поменять местами столбцы массива не вводя вспомогательную переменную, грубо говоря так: a:=a+b; b:=a-b'; a:=a-b; но паскаль не умеет отнимать и складывать массивы. У тебя есть два выхода: 1 Если программируешь на Fpc воспользуйся Перегрузкой операций 2 меняй их значения используя 3-ью переменную. -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
TS* |
10.12.2006 0:31
Сообщение
#4
|
Пионер Группа: Пользователи Сообщений: 71 Пол: Мужской Реальное имя: Max Репутация: 0 |
mP[x, f]:=mP[x, f]+mP[y, f];Это ты так пытаешься менять элементы местами? Смысл? Второе - Array of ... индексируется с 0, а не с 1-цы... Спасибо, не знал что арей оф индексируеться с [0]. А менять местами элементы просто нравиться без дополнительной переменной. Одного не понимаю, почему в 6-ом столбце все элементы всегда рвны 0 ? Ну во-первых, если программа не компилируется, то она и зависнуть не может. Такая пакость происходит только в RunTime, т.е. уже после компиляции и запуска. Во-вторых, ошибка происходит в процедуре perestanovka_st. Ты хочешь поменять местами столбцы массива не вводя вспомогательную переменную, грубо говоря так: a:=a+b; b:=a-b'; a:=a-b; но паскаль не умеет отнимать и складывать массивы. У тебя есть два выхода: 1 Если программируешь на Fpc воспользуйся Перегрузкой операций 2 меняй их значения используя 3-ью переменную. Где идет зависание "видно" при комбинацыи Ctrl + Break, и я не отнимаю масивы, а элементы. При вводе дополнительной переменной проблема осталась |
Bokul |
10.12.2006 0:50
Сообщение
#5
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Цитата и я не отнимаю масивы, а элементы Извиняюсь перепутал. У тебя походу идет переполнение стека + почему ты в процедуре perestanovka_st переменную mP: array of realm не под Var поставил? Какая от нее тогда польза? Поставь Var, должно помочь. Сообщение отредактировано: Bokul - 10.12.2006 0:51 -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
TS* |
10.12.2006 2:07
Сообщение
#6
|
Пионер Группа: Пользователи Сообщений: 71 Пол: Мужской Реальное имя: Max Репутация: 0 |
Извиняюсь перепутал. У тебя походу идет переполнение стека + почему ты в процедуре perestanovka_st переменную mP: array of realm не под Var поставил? Какая от нее тогда польза? Поставь Var, должно помочь. Спсибо, точно вар забыл . А как в даном случае избаится от переполнения стека? |
Алена |
10.12.2006 2:13
Сообщение
#7
|
Гость |
А каким образом у тебя возникает переполнение? Где именно? При таких маленьких размерах массивов его быть просто не должно, кроме того, Var - это передача "по ссылке", что не приближает Stack Overflow, а наоборот, отдаляет его...
|
TS* |
10.12.2006 2:45
Сообщение
#8
|
Пионер Группа: Пользователи Сообщений: 71 Пол: Мужской Реальное имя: Max Репутация: 0 |
А каким образом у тебя возникает переполнение? Где именно? При таких маленьких размерах массивов его быть просто не должно, кроме того, Var - это передача "по ссылке", что не приближает Stack Overflow, а наоборот, отдаляет его... Переполнение стека выкидает у Bokula на компиляторе, у меня програмка раз запускаеться и исполняеться, раз запускаеться и зависает на функции сумирования или процедуре подсчета столбцов Сообщение отредактировано: TS* - 10.12.2006 2:46 |
Алена |
10.12.2006 9:37
Сообщение
#9
|
Гость |
TS*, ты выбрал не самый правильный способ представления данных... У тебя в процедуру перестановки передается массив строк, а работать тебе нужно с массивом столбцов...
Но поскольку телепатией я не владею, и что у тебя N - число строк или столбцов - не знаю( а гадать не буду) - то жду твоего ответа... Сообщение отредактировано: Алена - 10.12.2006 9:37 |
TS* |
10.12.2006 12:45
Сообщение
#10
|
Пионер Группа: Пользователи Сообщений: 71 Пол: Мужской Реальное имя: Max Репутация: 0 |
TS*, ты выбрал не самый правильный способ представления данных... У тебя в процедуру перестановки передается массив строк, а работать тебе нужно с массивом столбцов... Но поскольку телепатией я не владею, и что у тебя N - число строк или столбцов - не знаю( а гадать не буду) - то жду твоего ответа... столбцов |
-xxx- |
10.12.2006 12:48
Сообщение
#11
|
Гость |
напиши в конце как получилась гтовая прога плз
|
TS* |
10.12.2006 15:04
Сообщение
#12
|
Пионер Группа: Пользователи Сообщений: 71 Пол: Мужской Реальное имя: Max Репутация: 0 |
uses Сообщение отредактировано: volvo - 27.03.2010 12:44 |
Алена |
10.12.2006 16:35
Сообщение
#13
|
Гость |
TS* Не то... Смотри, что она у меня выводит:
(особенное внимание - на нижнюю строку) А теперь сравни с этим: uses |
TS* |
11.12.2006 3:23
Сообщение
#14
|
Пионер Группа: Пользователи Сообщений: 71 Пол: Мужской Реальное имя: Max Репутация: 0 |
|
Bokul |
11.12.2006 3:50
Сообщение
#15
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Цитата А какое преимущество дает const в параметрах функцый? Есть два преимущества: 1 предохраняет от случайного изменения переменной. 2 экономит память в стеке. Без const процедура сначала скопирует переменную себе в стек, и только потом начнет работать с ней, а так она сазу работает с указателем на настоящую переменную, защищая данные расположены по адресу этого указателя от изменений. -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
Текстовая версия | 28.04.2024 5:03 |