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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2018, 01:20   #1
Antohamc
Новичок
Джуниор
 
Регистрация: 23.01.2018
Сообщений: 1
По умолчанию Вводится матрица вещественных чисел,необходимо поменять местами столбец с минимальным элементом и столбец с максимальным элементом.

ЗАДАНИЕ. Вводится матрица вещественных чисел,необходимо поменять местами столбец с минимальным элементом и столбец с максимальным элементом.
Не вижу ошибку,однако она есть,столбцы не меняются.

Код:
program Project2;

{$APPTYPE CONSOLE} 

uses
  SysUtils;

Var i, j, n, r, m :integer;
K1, K2 :integer; 
a :array[1..100, 1..100] of integer;
begin
Write('Введите кол. столбцов: ');
Readln(n);

Write('Введите кол. строк: ');
Readln(m);

Writeln('Введите элементы массива: ');
for i:=1 to n do begin
for j:=1 to m do begin
Readln(a[i,j]);
end;
end;

for j:=1 to n do begin
for i:=1 to m do begin
  if a[j, i]<a[j+1,i] then
    r := a[j, i];
    a[j, i] := a[j+1, i];
    a[j, i] := r;
end;
end;

Writeln('Резульат: ');
for i:=1 to n do begin
for j:=1 to m do begin
Write(' ', a[i,j]);
end;
Writeln('');
end;

Read(m); 
end.

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 23.01.2018 в 10:12.
Antohamc вне форума Ответить с цитированием
Старый 23.01.2018, 10:23   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Antohamc Посмотреть сообщение
Вводится матрица вещественных чисел
Цитата:
Сообщение от Antohamc Посмотреть сообщение
Код:
a :array[1..100, 1..100] of integer;
ошибка. у Вас целые числа. замените на real или double или extended


второе.
Цитата:
Сообщение от Antohamc Посмотреть сообщение
Код:
for j:=1 to n do begin
for i:=1 to m do begin
  if a[j, i]<a[j+1,i] then
    r := a[j, i];
    a[j, i] := a[j+1, i];
    a[j, i] := r;
end;
end;
это попытка отсортировать (ошибочная!)
Но в этой задаче сортировать ничего не нужно.
совсем.

нужное искать минимальное/максимальное значение.
причём искать нужно индексы (номера) столбцов с такими элементами.

это выглядит примерно так:
Код:
MinRow := 1; MinCol := 1;
MaxRow := 1; MaxCol := 1;
for i:=1 to m do 
for j:=1 to n do begin
  if a[MinRow, MinCol]>a[i,j] then begin
    MinRow := i; MinCol := j;
  end;
  if a[MaxRow, MaxCol]<a[i,j] then begin
    MaxRow := i; MaxCol := j;
  end;
end;
теперь нужно поменять местами столбцы MinCol и MaxCol:
Код:
if MinCol<>MaxCol then 
  for i:=1 to m do begin
     r:=a[i, MinCol];
     a[i, MinCol] := a[i, MaxCol];
     a[i, MaxCol] := r
  end;
всё.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В матрице поменять местами строки с max элементом и min элементом: объясните код, где какие действия выполняются (Паскаль). КонстантинКонстант Помощь студентам 0 08.01.2014 13:38
В массиве из 15 вещественных чисел найти наибольший элемент и поменять его местами с последним элементом массива. 1309 Помощь студентам 4 17.05.2012 14:25
скалярное произведение строки с наибольшим элементом на столбец с наименьшим элементом Adika Помощь студентам 4 03.11.2011 19:12
поменять местами столбец с максимальным элементом на главной диагонали со столбцом с заданным номером m. Visual C++ hunter08923 Помощь студентам 0 22.06.2011 00:14