Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2011, 10:27   #1
botaniQQQ
Новичок
Джуниор
 
Регистрация: 26.06.2011
Сообщений: 2
Вопрос Динамический массив

Здравствуйте, есть программа, писал не я. Нужно разобраться. Пожалуйста, закомментируйте каждую строчку (что в ней укаано и происходит по мере работы программы), если это не трудно.

Код:
uses crt;
const
     m=200;
     n=200;
type
    vekt=array [1..n] of real;
    matr=array [1..m] of ^vekt;
var
   mat: matr;
   vec: array [1..n] of real;
   i,j: integer;
   otv: array [1..m] of real;
begin
     clrscr;
     writeln('Доступная память перед началом работы: ', memavail);
     randomize;
     for i:=1 to m do new(mat[i]);
     for i:=1 to m do
         for j:=1 to n do
             mat[i]^[j]:=random;
     for j:=1 to n do vec[j]:=random;
     for i:=1 to n do otv[i]:=0;
     for i:=1 to m do
         for j:=1 to n do
             otv[i]:=mat[i]^[j]*vec[j]+otv[i];
     writeln('Доступная память во время работы: ', memavail);
     for i:=1 to m do dispose(mat[i]);
     writeln('Доступная память после работы: ', memavail);
     readln;
end.
botaniQQQ вне форума Ответить с цитированием
Старый 26.06.2011, 18:17   #2
Jaguar83
Профессионал
Пользователь
 
Аватар для Jaguar83
 
Регистрация: 25.05.2011
Сообщений: 91
По умолчанию

Вы хоть чуть-чуть программирование знаете?
Функции ввода-вывода на консоль, массивы, цикл for - знаете как работает?
Если нет - то не имеет смысла объяснять что-то, банально возьмите учебник и прочитайте как это работает.
Если да - в приведенной программе по сути комментировать ничего.
1. clrscr - Очищает активное окно и устанавливает курсор в левый верхний угол окна.
2. memavail - Возвращает количество всей свободной памяти в куче.
3. randomize - Инициализирует встроенный генератор случайных чисел.
4. random - Возвращает случайное число. В данном случае результатом будет случайное число типа Real в диапазоне 0 <= X < 1.

Вкратце происходит следующее:
Выделяется память в динамической куче под массив mat, и инициализируется случайными значениями 0 <= X < 1.
Инициализируются массивы otv и vec (в статической памяти). Определяется доступная память перед, во время и после работы работы с массивом mat.
Помог? Будь человеком - жми на весы слева!

Последний раз редактировалось Jaguar83; 26.06.2011 в 18:26.
Jaguar83 вне форума Ответить с цитированием
Старый 27.06.2011, 01:02   #3
botaniQQQ
Новичок
Джуниор
 
Регистрация: 26.06.2011
Сообщений: 2
Вопрос

Цитата:
Вы хоть чуть-чуть программирование знаете?
Функции ввода-вывода на консоль, массивы, цикл for - знаете как работает?
Знаю. Спасибо за ответ. Я не совсм разобрался с указателями, поэтому больше всего интересуют строки:
Код:
 mat[i]^[j]
Код:
 otv[i]:=mat[i]^[j]*vec[j]+otv[i];
botaniQQQ вне форума Ответить с цитированием
Старый 27.06.2011, 08:44   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
mat[i]^[j]
Цитата:
Код:
matr=array [1..m] of ^vekt;
Матрица mat содержит в себе ссылки (указатели).
Каждый указатель указывает на структуру VEKT
поэтому запись mat[i]^[j] означает, взять I-й указатель, и из массива, на который этот указатель ссылается, взять J-й элемент..

Цитата:
Код:
otv[i]:=mat[i]^[j]*vec[j]+otv[i];
i-й элемент массива otv присвоить сумму содержимого i-го элемента массива otv и произведения j-го элемента динамической матрицы, заданной указателем mat[i] и содержимого -j-го элемента массива vec
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический массив kop Общие вопросы C/C++ 4 01.05.2011 15:05
Динамический массив, массив указателей alexalisa Паскаль, Turbo Pascal, PascalABC.NET 4 22.04.2011 21:33
Динамический массив - или всё таки не динамический? vedro-compota Общие вопросы C/C++ 30 10.12.2010 23:22
Динамический массив Porsche Общие вопросы C/C++ 5 26.05.2010 08:04
Динамический массив Ueshua Общие вопросы C/C++ 3 19.12.2009 22:12