Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 172

/ вопрос решён /

Здравствуйте, уважаемые эксперты!
Решите, пожалйста, задачу: Найти min элементы 1-го столбца и 1-й строки матрицы А920*20), и поменять их местами.

Мамонова Елена Николаевна Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задала: Мамонова Елена Николаевна (статус: Посетитель)
Вопрос отправлен: 29 мая 2012, 14:02
Состояние вопроса: решён, ответов: 1.

Ответ #1. Отвечает эксперт: min@y™

Исключительно от скуки (сижу на работе).

{
Найти min элементы 1-го столбца и 1-й строки матрицы А920*20),
и поменять их местами.
}
 
program MegaLaba_100500;
 
const
  N = 20;
 
type
  TMatrix: array[0..N - 1, 0..N - 1] of Integer; { или какой должен быть тип элементов? }
 
{ заполнение матрицы случайными числами }
procedure MakeMatrix(var X: TMatrix);
var
  Row, Col: Integer;
begin
  for Row:= 0 to N - 1 do
    for Col:= 0 to N - 1 do
      X[Row, Col]:= Random(101) - 50; { ну или как-то по-другому }
end;
 
{ вывод матрицы на экран }
procedure PrintMatrix(const X: TMatrix);
var
  Row, Col: Integer;
begin
  { сама сделаешь - элементарно }
end;
 
{ поиск минимальных элементов 1-го столбца и 1-й строки матрицы
  и их перестановка }
procedure ProcessMatrix(var X: TMatrix);
var
  Row, Col: Integer;
  MinRow: Integer; { индекс минимального элемента 1-го столбца }
  MinCol: Integer; { индекс минимального элемента 1-й строки }
  Min: Integer;
begin
  { поиск минимального в 1-м столбце }
  Min:= X[0, 0];
  MinRow:= 0;
  for Row:= 1 to N - 1 do
    if X[Row, 0] < Min
      then begin
             Min:= X[Row, 0];
             MinRow:= Row;
           end;
 
  { поиск минимального в 1-й строке }
  Min:= X[0, 0];
  MinCol:= 0;
  for Col:= 1 to N - 1 do
    if X[0, Col] < Min
      then begin
             Min:= X[0, Col];
             MinCol:= Col;
           end;
 
  { перестановка местами }
  Min:= X[MinRow, 0];
  X[MinRow, 0]:= X[0, MinCol];
  X[0, MinCol]:= Min;
end;
 
var
  A: TMatrix;
 
begin
  MakeMatrix(A);    { инициализация матрицы }
  WriteLn('Исходная матрица:');
  PrintMatrix(A);   { вывод исходной матрицы на экран }
  ProcessMatrix(A); { обработка матрицы согласно условию задачи }
  WriteLn('Обработанная матрица:');
  PrintMatrix(A);   { вывод обработанной матрицы на экран }
  ReadLn;           {ожидание нажатия Enter }
end.

Ахтунг! Не отлаживал, писал на коленке!

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 29 мая 2012, 14:50
Оценка за ответ: 5

Комментарий к оценке: Спасибо большое!

Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 29 мая 2012, 14:47; участников в обсуждении: 2.
min@y™

min@y™ (статус: Доктор наук), 29 мая 2012, 14:32 [#1]:

Цитата (Мамонова Елена Николаевна):

матрицы А920*20)

Мой телепатор говорит, что вместо "9" должна быть скобка. Он прав, да?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Мамонова Елена Николаевна

Мамонова Елена Николаевна (статус: Посетитель), 29 мая 2012, 14:47 [#2]:

да)

29 мая 2012, 14:52: Вопрос перемещён из тематического раздела Pascal » Программирование на Pascal в раздел Лабораторный практикум » Pascal модератором DNK

4 июня 2012, 11:49: Статус вопроса изменён на решённый (изменил модератор DNK)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:46
Выполнено за 0.03 сек.