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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2011, 19:34   #1
Keti
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 11
Печаль Матрица

Очень нужна помощь...

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

Сделано только начало...хотя не уверена, что правильно (попыталась осуществить ввод/вывод матрицы)

Вот что у меня получилось:

program lab6;
type
TMatrix = array[1..50, 1..50] of integer; // Тип матрица
var
Matrix: TMatrix; // Матрица
a: array[1..50] of integer; // Дополнительный массив
rows, cols: integer; // Количество строк, столбцов в матрице
i, j: integer; // Счетчики для циклов с параметром
Done: boolean; // Признак, показывающий был ли хоть один обмен
t: integer; // Временная переменная, используется при обмене элементов
массива
// Процедура ввода матрицы
procedure Input(var mt: TMatrix; var n: integer; var m: integer);
var
i, j: integer;
begin
write('Введите количество строк: ');
readln(n);
write('Введите количество столбцов: ');
readln(m);
for i := 1 to n do
for j := 1 to m do
begin
write('Введите [', i, ', ', j, '] элемент: ');
readln(mt[i, j]);
end;
end;
// Процедура вывода матрицы
procedure Output(mt: TMatrix; n, m: integer);
var
i, j: integer;
begin
for i := 1 to n do
begin
for j := 1 to m do
write(mt[i, j]:5);
writeln;
end;
end....

Делала по образцу...ничего не получается.... очень-очень нужна ваша помощь.

Последний раз редактировалось Keti; 26.12.2011 в 19:37.
Keti вне форума Ответить с цитированием
Старый 26.12.2011, 20:22   #2
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Код:
type
 TMatrix = array[1..50, 1..50] of integer; // Тип матрица
 // Процедура ввода матрицы
 procedure Input(var mt: TMatrix; var n: integer; var m: integer);
 var
   i,j: integer;
 begin
   write('Введите количество строк: ');
   readln(n);
   write('Введите количество столбцов: ');
   readln(m);
   for i := 1 to n do
     for j := 1 to m do
       begin
         write('Введите [', i, ', ', j, '] элемент: ');
         readln(mt[i, j]);
       end;
 end;

 // Процедура вывода матрицы
 procedure Output(mt: TMatrix; n, m: integer);
 var
 i, j: integer;
 begin
  for i := 1 to n do
     begin
       for j := 1 to m do
         write(mt[i, j]:5);
     writeln;
     end;
 end;

procedure findMIN(mt:Tmatrix; n,m:integer; var K:integer);
var
  i,j,min:integer;
begin
  min:=mt[1,1]; 
  for i:=1 to n do
    for j:=1 to m do
      if mt[i,j]<min then
        begin
          k:=i;  //номер строки с минимальным элементом
          min:=mt[i,j];
        end;
end;

procedure PrVKL(n,k:integer; var mt:tmatrix); // внаглую содрал с http://www.cyberforum.ru/pascal/thread150826.html
var
  i,j:integer;
  num:integer;
begin
    for i := 2 to N do begin
      j := i;
      Num := mt[k,i];
      while (j > 1) and (mt[k,j - 1] > Num) do begin
        mt[k,j] := mt[k,j - 1];
        j := j - 1;
      end;
      mt[k,j] := Num;
    end;
end;


VAR
 Matrix: TMatrix; // Матрица
// a: array[1..50] of integer; // Дополнительный массив
 rows, cols: integer; // Количество строк, столбцов в матрице
 i, j,n,m,k: integer; // Счетчики для циклов с параметром
 Done: boolean; // Признак, показывающий был ли хоть один обмен
 t: integer; // Временная переменная, используется при обмене элементов массива

BEGIN
  input(matrix,n,m);
  output(matrix,n,m);
  findmin(matrix,n,m,K);
  PrVKL(n,k,matrix);
  writeln;
  output(matrix,n,m);
  readln;
 end.
Осталось только немного отполировать (много лишних переменных, но я уже не стал с этим заморачиваться)

И еще совет на будущее: процедуры и функции лучше всего писать в type, а в VAR указывать только переменные для тела программы.
Все тривиальное просто

Последний раз редактировалось whatever; 26.12.2011 в 20:37.
whatever вне форума Ответить с цитированием
Старый 02.01.2012, 17:16   #3
Keti
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 11
По умолчанию

Спасибо огромное за помощь))))
Отполирую сама, а совет тоже пригодится)
Keti вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрица си Pascaler Помощь студентам 0 05.04.2011 21:27
Непонятки с DirectX (матрица поворота, камера, матрица проекции) ROD Общие вопросы C/C++ 2 17.09.2010 17:00
матрица в 1С Steisha Помощь студентам 0 27.02.2010 15:08
TurboPascal: граф, матрица смежности и матрица инцидентности. ulala Помощь студентам 0 02.12.2009 10:11
Матрица jorjinho10 Паскаль, Turbo Pascal, PascalABC.NET 2 14.05.2009 15:18