Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ матрица с незаданными размерами

Автор: proldma/ 11.04.2007 3:36

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

Вобщем -- очень жду Ваших советов.

Автор: volvo 11.04.2007 3:43

Цитата
Т.е старым добрым 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) гораздо лучше, но немного сложнее:
http://forum.pascal.net.ru/index.php?s=&showtopic=6730&view=findpost&p=28387

Автор: proldma/ 23.05.2007 1:24

А кто-нить может пояснить мне в этой процедуре :


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 23.05.2007 1:43

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

А если она компилируется - расскажи, ЧЕМ...

Автор: nikita182 23.05.2007 1:45

Цитата(proldma/ @ 22.05.2007 22:24) *

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


потому что ее такой придумали...

Автор: proldma/ 23.05.2007 2:13

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

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

Функцию я написал чтоб было ясно что есть МАТР и откуда берётся Х.

Автор: Ozzя 23.05.2007 13:45

Цитата(proldma/ @ 22.05.2007 23:13) *

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

Синтаксическую ошибку означает такая формулировка.

Автор: proldma/ 2.06.2007 19:20

М(с)[i] где с-нетипизированный формальный параметр и ему может быть присвоено чё угодно(real, integer, ещё какие-нибудь массивы). Вот так. yes2.gif

Автор: volvo 2.06.2007 20:34

Цитата
Вот так.
У тебя в функции НЕТ нетипизированного параметра X... Есть только X: Integer... Для того, чтобы он стал нетипизированным, надо:
Цитата
FUNCTION INCR(VAR X;N:integer):Boolean;
Так что, с заданным определением ЭТО - синтаксическая ошибка, а телепатов искать будешь на другом форуме, ибо КАК это вызывается тоже не видно...

Вот так... (С)

Автор: proldma/ 3.06.2007 3:03

Рад что Вам понравилось. Спасибо, разобрался.