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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2011, 19:38   #1
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
Вопрос В Паскале через двойной массив составить матрицу

Добрый вечер.

Задание такое.

Надо составить программу,где в данной матрице надо найти элемент,который наибольший во всём ряду и наименьший во всей колонке,учитывая тот факт,что в матрице могут быть одинаковые элементы и если в ней несколько одинаковых элементов,то надо проверять каждый.

т.е. 452
163 ,будет 5,это наибольший элемент в ряду и наименьший в колонке,в ране это выдаётся как 1 ряд,2 колонка

Просто если элемент повторяется,то на экране он выдаст только первый элемент,а второй(повторный нет....)

Код:
program masivs;
uses crt;
type mas=array [1..10,1..10] of integer;
var a:mas;
    i,j,k,m,n,max,maxj:integer;
    paz:boolean;
begin
clrscr;
     write ('Vvvedite razmer massiva ===> ');
     readln (m,n);
     for i:=1 to m do
         for j:=1 to n do begin
                          write ('Vvedite A (',i,',',j,') ===> ');
                          readln (a[i,j])
                          end;
     {najdite element, kotorij naibolwij v radu,no naimenwij v kolonne}
     writeln ('Iskomij element nahoditsa ');
     for i:=1 to m do begin
                      max:=a[i,1];
                      maxj:=1;
                      for j:=2 to n do if a[i,j]>max then begin
                                                          max:=a[i,j];
                                                          maxj:=j
                                                          end;
                      paz:=true;
                      for k:=1 to m do if a[k,maxj]<a[i,maxj] then paz:=false;
                      if paz then writeln (i,'. rad i  ',maxj,'. kolonna')
                      end;
     readln
end.

Последний раз редактировалось Novenkaja; 12.04.2011 в 19:58.
Novenkaja вне форума Ответить с цитированием
Старый 12.04.2011, 20:40   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Novenkaja, а что Вас не устраивает? По моему все отлично работает(Правда я бегло протестировал) . Приведите пример матрицы, когда не правильно работает программа.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 12.04.2011, 20:43   #3
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
По умолчанию

да за просто

452
135

и тогда он не показвает где находится искомый элемент
да она работает,но если элемент не повторяется,а если же написать повторный??? если единичную матрицу????
а если вообще нулевую??? тогда как???

Последний раз редактировалось Novenkaja; 12.04.2011 в 20:50.
Novenkaja вне форума Ответить с цитированием
Старый 12.04.2011, 21:17   #4
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Итак, по порядку
Цитата:
да за просто
452
135
Ну так в этой матрице нет элемента НАИБОЛЬШЕГО в своей строке и одновременно НАИМЕНЬШЕГО в своем столбце.
Цитата:
но если элемент не повторяется,а если же написать повторный???
Попробуйте ввести такую матрицу, и вы поймете, что все работает
5234
6542
7152
5131
Цитата:
если единичную матрицу????
а если вообще нулевую??? тогда как???
Тогда вообще нельзя будет найти такие элементы. И соответственно надо выводить сообщения об отсутствии элементов или ошибки задания матрицы
Код:
type mas=array [1..10,1..10] of integer;
var a:mas;
    i,j,k,m,n,max,maxj:integer;
    paz,flag:boolean;
begin
     write ('Vvvedite razmer massiva ===> ');
     readln (m,n);

     for i:=1 to m do
         for j:=1 to n do begin
                          write ('Vvedite A (',i,',',j,') ===> ');
                          readln (a[i,j])
                          end;
     {najdite element, kotorij naibolwij v radu,no naimenwij v kolonne}
     flag:=False;
     If (n > 1) and (m >1) then
     Begin
     for i:=1 to m do begin
                      max:=a[i,1];
                      maxj:=1;
                      for j:=2 to n do if a[i,j]>max then begin
                                                          max:=a[i,j];
                                                          maxj:=j
                                                          end;
                      paz:=true;
                      for k:=1 to m do if a[k,maxj]<a[i,maxj] then paz:=false;
                      if paz then
                      Begin
                        Flag:=True;
                        writeln ('Iskomij element nahoditsa ',i,'. rad i  ',maxj,'. kolonna')
                      End;
                      end;
                      End;
     If (Flag = False) and (n > 1) and (m>1) then Writeln('Elementy ne obnaruzheny ');
     If (n <= 1) or (m <= 1) then Writeln('Ne verno zadana mtrica');
     readln
End.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 12.04.2011, 21:46   #5
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
По умолчанию

Цитата:
Сообщение от GetMax Посмотреть сообщение
Итак, по порядку

Ну так в этой матрице нет элемента НАИБОЛЬШЕГО в своей строке и одновременно НАИМЕНЬШЕГО в своем столбце.

Попробуйте ввести такую матрицу, и вы поймете, что все работает
5234
6542
7152
5131
[/QUOTE]
да,работает

Цитата:
Сообщение от GetMax Посмотреть сообщение
Тогда вообще нельзя будет найти такие элементы. И соответственно надо выводить сообщения об отсутствии элементов или ошибки задания матрицы
возможно,преподователь просто он не понятно под конец лекции сказал формулировку задания и каждый записал её так,как услышал....

кст а что за flag какую функцию он здесь выполняет??? так скажем роль чего?

Последний раз редактировалось Stilet; 13.04.2011 в 12:33.
Novenkaja вне форума Ответить с цитированием
Старый 13.04.2011, 11:11   #6
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Цитата:
кст а что за flag какую функцию он здесь выполняет??? так скажем роль чего?
Данная переменная получит значение "истина", если в матрице есть хотя бы один нужный элемент. Если таких элементов нет (Flag = False), то выводим сообщение об их отсутствии.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Транспонетную матрицу написать через массив так,чтобы использовалась одна матрица Novenkaja Помощь студентам 2 06.04.2011 00:36
В Паскале составить программу в уменьшающей последовательности через массив Novenkaja Помощь студентам 7 15.03.2011 17:08
Составить программу вычисления двойной суммы(assembler) grongost Помощь студентам 1 26.02.2011 11:31
Составить программу вычисления двойной суммы (Assembler) fuzo Помощь студентам 3 13.02.2011 22:08
Как составить матрицу корреспонденции? Alex2008 Помощь студентам 3 25.04.2008 19:17