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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2010, 14:49   #1
pif
Пользователь
 
Регистрация: 26.11.2008
Сообщений: 37
По умолчанию Нахождение минимального элемента матрицы переменной длины.паскаль.

В общем такая задача, даны две матрицы, нужно приведя их к типу массив найти их минимальные элементы, при этом вывести номер столбца и строки где находится этот элемент.найдите ошибку плиз!
Код:
const m1=2;n1=4;  {n-kol-vo stolbcov,mkol-vo strok}
      m2=3;n2=4;
type
      t_arr=array[1..65520 div sizeof(integer)] of integer;
      t_matr_1=array [1..n1,1..m1] of integer;
      t_matr_2=array [1..n2,1..m2] of integer;
      t_mas=array [shortint] of integer;
procedure read_matr(var a;n,m:byte);
var
   z:byte;
   k:t_arr absolute a;
  begin
       for z:=1 to n*m do
       read (k[z]);
  end;
function min_el(var a:array of integer;n,m:byte;var g,h:byte):integer;
var min,i,j:integer;
    begin
    min:=maxint;
         for j:=1 to n do
            for i:=1 to m do
             if a[(i-1)*n+j]<min then
                begin
                     min:=a[(i-1)*n+j];
                     g:=j;{j-номер столбца}
                     h:=i;{i номер строки}
                end;
         min_el:=min;
    end;


var
   a:t_matr_1;
   b:t_arr absolute a;
   c:integer;k,g:byte;
  begin
       read_matr(a,n1,m1);
       c:=min_el(b,n1,m1,k,g);
       writeln (c);
       writeln (k,' ',g);
       readln;
       readln;
  end.

Последний раз редактировалось pif; 13.03.2010 в 21:10.
pif вне форума Ответить с цитированием
Старый 13.03.2010, 21:21   #2
pif
Пользователь
 
Регистрация: 26.11.2008
Сообщений: 37
По умолчанию

что никто не знает в чем дело?
pif вне форума Ответить с цитированием
Старый 13.03.2010, 21:48   #3
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Код:
min:=a[1,1];
For i:=1 to ... do
For j:=1 to ... do
begin
If min>a[i,j] then
begin
min:=a[i,j];
str:=i;
stolb:=j;
end;
end;
showmessage('Координаты минимального элементы'+str+' '+stolb);
Вот рабочий код, только аод свою стреду переделайте.
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Старый 13.03.2010, 22:03   #4
pif
Пользователь
 
Регистрация: 26.11.2008
Сообщений: 37
По умолчанию

Цитата:
Вот рабочий код, только аод свою стреду переделайте.
не это не то, это просто алгоритм поиска мин элемента, а я прошу,для матрицы, неизвестного размера, те передаешь процедуре матрицу любую, а она находит что надо,в паскале.
поэтому с помощью абсолюта, записываю эту матрицу в тоже место в памяти что и одномерный массив. только ошибка где то не могу найти.
pif вне форума Ответить с цитированием
Старый 13.03.2010, 22:10   #5
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Так ладно. Где ошибка? В какой строке? Если конечно паскаль показывает это. Я уже не помню. Вобщем ошибка точно есть =) В самой функции копайтесь, переменные посмотрите, их типы. Попробуйте в одних типах всё сделать, и мне кажется что тут
Код:
    min:=a[(i-1)*n+j];
                     g:=j;{j-номер столбца}
                     h:=i;{i номер строки}
                end;
         min_el:=min;
С выводом проблема, но я могу ошибаться. Попробуйте меньше матриц взять и сделать без функции а потом наращивайте проэкт... Всё чем могу помочь - помог.
"Тебе то может на меня и насрать, но твои глаза меня обожают!"

Последний раз редактировалось ImmortalAlexSan; 13.03.2010 в 22:17.
ImmortalAlexSan вне форума Ответить с цитированием
Старый 13.03.2010, 22:48   #6
pif
Пользователь
 
Регистрация: 26.11.2008
Сообщений: 37
По умолчанию

Не ошибка не в компиляции, а в ответе, не то что надо выдает.
Код:
 min:=a[(i-1)*n+j];
                     g:=j;{j-номер столбца}
                     h:=i;{i номер строки}
                end;
         min_el:=min;
сдесь наврядли, потому что я просто перебираю элементы,нахожу их в одномерном массиве, который записан по тому же адресу.
pif вне форума Ответить с цитированием
Старый 13.03.2010, 23:23   #7
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Я же говорю прокрутите минимум из программы и посмотрите где что не так идет а потом в функцию загоните.
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Старый 13.03.2010, 23:46   #8
pif
Пользователь
 
Регистрация: 26.11.2008
Сообщений: 37
По умолчанию

Цитата:
Сообщение от ImmortalAlexSan Посмотреть сообщение
Я же говорю прокрутите минимум из программы и посмотрите где что не так идет а потом в функцию загоните.
хех ну легко сказать, тут и так программа маленькая.
ну ввод матрицы работает. а вот минимум не так ишет как надо.
pif вне форума Ответить с цитированием
Старый 14.03.2010, 01:07   #9
pif
Пользователь
 
Регистрация: 26.11.2008
Сообщений: 37
По умолчанию

кто нить знает я тут на тот адрес что надо записываю?
и нумерация в циклах должна не с 0 начинаться?
pif вне форума Ответить с цитированием
Старый 14.03.2010, 01:07   #10
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Я привел пример минимума вам. Отталкивайтесь от него) И постепенно наращивайте=) Ладно я спать удачи! Ваш выбор с чего нумерацию начинать. Элементы массива только вот с единицы начинаются. Главное чтобы вы перебрали цикл столько раз сколько элементов в матрице=)
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск минимального элемента в матрице F1eCSo Помощь студентам 0 04.02.2010 17:20
Паскаль. Дана матрица размерностью M*M. Найти сумму координат минимального элемента Венера9 Помощь студентам 3 26.01.2010 15:21
Нахождение минимального пути по графам Nextgen Общие вопросы C/C++ 3 30.12.2009 14:14
Нахождение минимального элемента в массиве [Паскаль] pionerka Помощь студентам 4 03.11.2009 16:02
Поиск минимального (максимального) элемента массива Radamant Помощь студентам 10 24.12.2008 17:44