Помощь - Поиск - Пользователи - Календарь
Полная версия: матрица с незаданными размерами
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
proldma/
У меня ТР: Решить задачу (котарова 4.3.3) с использованием процедур. Эт ладно. Но впрос возникает в другом. Формулировка такая : "Найти максимальный среди отрицательных элементов прямоугольной матрицы и минимальный среди положительных. Если они отличаются...".
Т.е старым добрым for здесь не воспользуешься - матрица рандомна. какую захочет юзер такую её и задаст (((. Как назло в проге обязательно чтение из файла.Так как же удобней решать эту часть задачи? В начале проги как-то определить число строк и столбов? Но как?

Вобщем -- очень жду Ваших советов.
volvo
Цитата
Т.е старым добрым for здесь не воспользуешься
Еще как воспользуешься... Как бы юзер не хотел задать матрицу "без границ", Паскаль ему этого не позволит, в программе должно быть указано, какие размеры имеет матрица, а коли так - то можно использовать For...

Есть 2 пути решения этой задачи:
1) не очень хорошо, но очень просто:
const
max_n = 50;
max_m = 50;
var a: array[1 .. max_n, 1 .. max_m] of integer;

{
Дальше у пользователя запрашиваем N (1 <= n <= max_n) и
M (1 <= m <= max_m) и работаем с куском матрицы
}


2) гораздо лучше, но немного сложнее:
Динамические массивы и матрицы
proldma/
А кто-нить может пояснить мне в этой процедуре :


FUNCTION INCR(VAR X,N:integer):Boolean;
type Matr=array[1..3,1..3] of real;
VAR FL:boolean;
I:integer;
Begin
Fl:=true;
For i:=2 to 3 do
if MATR(x)[i,j]<MATR(x)[i-1,j-1] then
fl:=false;
incr:=fl
end;



Что означает

MATR(x)[i,j]


и почему названию функции здесь присваивают знач простой переменной?

Что это за форма записи такая?
volvo
А это что, работающая функция, чтобы ее комментировать? Мало ли, что я могу написать...

А если она компилируется - расскажи, ЧЕМ...
nikita182
Цитата(proldma/ @ 22.05.2007 22:24) *

и почему названию функции здесь присваивают знач простой переменной?


потому что ее такой придумали...
proldma/
ЧЕМ? Не знаю. Какая разница. Мне не нужны коментарии к функции (я не знаю пашет ли она вообще).

Например про A[i,j] ты же можешь сказать, что это двумерный массив,i - номер строки, j- номер столба?..
Мне просто нужно знать, что в паскале означает формулировка MATR(x)[i,j] ?

Функцию я написал чтоб было ясно что есть МАТР и откуда берётся Х.
Ozzя
Цитата(proldma/ @ 22.05.2007 23:13) *

Мне просто нужно знать, что в паскале означает формулировка MATR(x)[i,j] ?

Синтаксическую ошибку означает такая формулировка.
proldma/
М(с)[i] где с-нетипизированный формальный параметр и ему может быть присвоено чё угодно(real, integer, ещё какие-нибудь массивы). Вот так. yes2.gif
volvo
Цитата
Вот так.
У тебя в функции НЕТ нетипизированного параметра X... Есть только X: Integer... Для того, чтобы он стал нетипизированным, надо:
Цитата
FUNCTION INCR(VAR X;N:integer):Boolean;
Так что, с заданным определением ЭТО - синтаксическая ошибка, а телепатов искать будешь на другом форуме, ибо КАК это вызывается тоже не видно...

Вот так... (С)
proldma/
Рад что Вам понравилось. Спасибо, разобрался.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.