1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| kent |
30.07.2005 20:16
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 50 Пол: Мужской Реальное имя: Андрей Репутация: 1 |
Захотел использовать динамическую матрицу в задаче, но что то не получается... Попытался сначала сделать ввод вывод, но вводишь к примеру M = 3, N = 3...
Вводишь 1 2 3 1 2 3 1 2 3 Выводит 1 1 1 1 1 2 1 2 3 Вот код:
Подскажите что не так... Сообщение отредактировано: kent - 30.07.2005 20:39 |
![]() ![]() |
| volvo |
30.07.2005 21:18
Сообщение
#2
|
|
Гость |
Цитата(kent @ 30.07.05 20:16) Подскажите что не так... GetMem(a,Size); Если бы все было так просто... Вообще-то описания типов должны быть такими: type Ну, и выделение/освобождение памяти, соотвественно: ReadLn(M); Кстати, в процедуре распечатки матрицы у тебя лишний If - зачем? Вот так не лучше? ;) Procedure WriteMatrix(mx : PMatrix); |
| kent |
30.07.2005 21:57
Сообщение
#3
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 50 Пол: Мужской Реальное имя: Андрей Репутация: 1 |
Попробовал сделать так, выводит правильно, но вместо того чтобы ждать нажатия клавиши (Readkey), выдает Runtime - error 204...
И ещё вопрос, что означает?
Не совсем врубаюсь... Может проще как-нибудь можно? |
| volvo |
30.07.2005 22:26
Сообщение
#4
|
|
Гость |
Цитата(kent @ 30.07.05 21:57) выводит правильно, но вместо того чтобы ждать нажатия клавиши (Readkey), выдает Runtime - error 204... Значит, что-то неправильно делаешь (эта ошибка возникает при неправильной работе с указателями через GetMem/FreeMem)... Вот так должно происходить освобождение: For i := 1 To M Do Цитата(kent @ 30.07.05 21:57) И ещё вопрос, что означает? MaxInt div sizeof(Type) Может проще как-нибудь можно? Вообще-то я пропустил, там должно быть вот так: TVector = Array[1 .. 2 * maxInt div sizeof(MyType)] Of MyType;:p2: Это означает, что максимальное число элементов массива рассчитывается исходя из следующих соображений: максимальный размер массива в Турбо-Паскале = 64Кбайта, что соответствует 2*maxInt. Но столько элементов в массив поместится только, если размер каждого = 1 байту. У тебя размер каждого элемента = SizeOf(MyType), вот и дели макс. возможный размер на размер каждого элемента, чтобы получить макс. число элементов в массиве... При таком способе у тебя НИКОГДА не произойдет выхода за пределы массива... Можно, в принципе, оставить как было у тебя: type , но тогда тебе придется отключать контроль выхода за пределы массива ({$R-}), что не очень хорошо, ведь контроль отключается ДЛЯ ВСЕЙ программы... |
kent Динамическая матрица 30.07.2005 20:16
kent Сейчас все ОК, никаких ошибок... :)
Немного н... 30.07.2005 22:46
volvo
Я так и думал... Это очень распространенная ошибк... 30.07.2005 22:58![]() ![]() |
|
Текстовая версия | 8.12.2025 17:40 |