![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 24.02.2009
Сообщений: 269
|
![]()
Добрый вечер... Мне нужно было написать программу, которая вычисляет средне арифметического значения отрицательных элементов квадратной матрицы A(K,K) расположенных под главной диагональю с ипсользованием динамического массива. Саму матрицу считывают из фала и записывают в файл. Размерность динамического массива задается не пользователем, а при помощи определения размера файла. Вот исходный код:
Код: Код:
Помогите мне исправить задачку... |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 04.04.2009
Сообщений: 438
|
![]()
Динамические массивы отсутствуют в TP, поэтому приходится изворачиваться с помощью указателей на блоки памяти. При таком расположении данных в памяти индексация тоже допустима, но ДОЛЖНА НАЧИНАТЬСЯ С 0.
Код:
А это вообще полнейший бред: Код:
Память надо выделять по размерности массива учитывая тип данных, а не по размеру файла: size:= SizeOf(Integer)*dim*dim; {а это долой FileSize(fin_temp);} Когда код был избавлен от перечисленных выше ошибок, то все заработало на 5. Последний раз редактировалось Скандербег; 21.04.2009 в 00:42. |
![]() |
![]() |
![]() |
#3 | |
Форумчанин
Регистрация: 24.02.2009
Сообщений: 269
|
![]() Цитата:
Код:
|
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 04.04.2009
Сообщений: 438
|
![]()
Это, скорее, я туповат. Схитрил в коде, а потом про это забыл. От того и матрица читалась корректно.
Более тщательное исследование и попытки вспомнить что-то про TP окончательно подтвердили прежде смутное опасение. Индексировать таким образом размещенный в памяти двумерный массив нельзя. Одномерный можно, а с размерностью более 1 - нет. Так что придется переделывать. В своем примере выше, опять же по забывчивости, указал, что Integer занимает 4 байта, а на самом деле 2 (речь про TP). Кстати, понятия "динамический массив" в TP тоже нет, если говорить о прямом смысле термина, т.е. возможность изменять размер массива при работе программы. Поэтому, если это задание от преподавателя, то препод либо такой же забывчивый как я, либо "коварный" и дал некорректное задание с использованием несуществующих возможностей. Последний раз редактировалось Скандербег; 21.04.2009 в 06:19. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
динамический массив | Dimon | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 21.03.2008 18:08 |
Динамический массив | _ares_ | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 26.12.2007 23:54 |
динамический массив | Diller | Помощь студентам | 48 | 07.10.2007 16:43 |
Динамический массив. | Mickle | Помощь студентам | 9 | 21.06.2007 20:31 |