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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2012, 20:20   #1
Anton94.by
Форумчанин
 
Регистрация: 16.10.2011
Сообщений: 115
Сообщение Дана действительная матрица A размерности. Если минимальный элемент матрицы расположен над главной диагональю, а максимальный эл.

Исправить ошибку в программе.

Тема: «Методы сортировок»

Выполнить задание по обработке матриц с использованием указанных методов сорти-ровок (согласно варианту).
Программу оформить с использованием подпрограмм (ввод, вывод, обработка, метод сортировки).
На печать выдавать всю исходную информацию, промежуточные результаты и преоб-разованную матрицу.

Задание:
Дана действительная матрица A размерности . Если минимальный элемент матрицы расположен над главной диагональю, а максимальный элемент — под главной диагональю, то упорядочить столбцы матрицы по не убыванию методом линейного выбора с подсчетом. В противном случае матрицу оставить без изменения.


Код:
( Программу сделать так, чтобы надо было всё вводить в окне Паскаль, т.е. writeln, readln.).
program st;
uses crt;
var
  a:array[1..7,1..7] of integer;
  i, j, max, min, imax, jmax, imin, jmin, obm, k:integer;
begin
  clrscr;
  randomize;
  for i:=1 to 7 do
  begin
    for j:=1 to 7 do
    begin
      a[i,j]:=random(99);
      if (i+j)<j*2 then textcolor(red)
      else textcolor(green);
      write(a[i,j]:3);
      if i=1 then if j=1 then
      begin
        max:=a[i,j];
        imax:=1;
        jmax:=1;
        min:=a[i,j];
        imin:=1;
        jmin:=1;
      end;
      if max< a[i,j] then
        begin
          min:=a[i,j];
          imin:=i;
          jmin:=j;
        end;
    end;
    writeln;
  end;
  writeln;
  writeln('max=',max,'min=',min);
  writeln;
  if (imin+jmin)*2 then if imax+jmax>jmax*2 then ( ошибку выдаёт в это строчке, я делал её ещё так: " if (imin<jmin) and (imax>jmax) then " но в этом случае программа работает неправильно.)
  begin
    for j:=1 to 7 do
    begin
      for i:=1 to 7 do
      begin
        for k:=i to 7 do
        begin
          if a[i,j]>a[k,j] then
          begin
            obm:=a[i,j];
            a[i,j]:=a[k,j];
            a[k,j]:=obm;
          end;
        end;
      end;
    end;
  end;
  textcolor(13);
  for i:=1 to 7 do
  begin
    for j:=1 to 7 do
    begin
      write(a[i,j]:3);
    end;
    writeln;
  end;
  readkey;
end.
Anton94.by вне форума Ответить с цитированием
Старый 29.02.2012, 23:22   #2
Anton94.by
Форумчанин
 
Регистрация: 16.10.2011
Сообщений: 115
По умолчанию

Может кто знает как по-другому написать, дак напишите.
Anton94.by вне форума Ответить с цитированием
Старый 29.02.2012, 23:26   #3
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Код:
if (imin+jmin)*2 then
Что это? Что с чем сравниваете?
Ну а тут
Цитата:
Код:
  for i:=1 to 7 do
  begin
    for j:=1 to 7 do
    begin
      a[i,j]:=random(99);
      if (i+j)<j*2 then textcolor(red)
      else textcolor(green);
      write(a[i,j]:3);
      if i=1 then if j=1 then
      begin
        max:=a[i,j];
        imax:=1;
        jmax:=1;
        min:=a[i,j];
        imin:=1;
        jmin:=1;
      end;
      if max< a[i,j] then
        begin
          min:=a[i,j];
          imin:=i;
          jmin:=j;
        end;
    end;
    writeln;
  end;
обьясните мне методологию нахождения максимума и минимума?
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 29.02.2012, 23:54   #4
Anton94.by
Форумчанин
 
Регистрация: 16.10.2011
Сообщений: 115
По умолчанию

Вы выделили часть кода, где в разные цвета разукрашивается матрица, т.е. правый верхний треугольник будет красным, а левый треугольник будет зелёным.
P.S. треугольники из квадрата, т.е. как например в квадрате провести линию и получится 2 прямоугольных треугольника, так и здесь.

А так же здесь я описываю max и min элементы.
Anton94.by вне форума Ответить с цитированием
Старый 01.03.2012, 00:06   #5
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

разукрашивание делается проще!
Если матрица делится главной диагональю то
Код:
if i < j then textcolor (blue);
if i > j then textcolor (red);
if i = j then textcolor (green);
всё что ниже голубое. что выше - красное, диагональ - зелёная
А вот что касается max и min , ТО мне интересно КАК ВЫ ИХ НАХОДИТЕ?
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 01.03.2012, 18:37   #6
Anton94.by
Форумчанин
 
Регистрация: 16.10.2011
Сообщений: 115
По умолчанию

Сразу нахожу минимальный элимент, потом нахожу максимальный элимент. Потом прповеряю, где находятся элименты, т.е. если минимальный элимент расположе над главной диагональю, а максимальный под главной диагональю, то произвожу обмен, т.е. упорядочиваю столбцы матрицы не по убыванию методом линейного выбора с подсчетом. А если наоборот, то матрицу оставляю без изменения.
Anton94.by вне форума Ответить с цитированием
Старый 01.03.2012, 18:40   #7
Anton94.by
Форумчанин
 
Регистрация: 16.10.2011
Сообщений: 115
По умолчанию

Вы просмотрите, может эта программа вообще неправильная. Если можете, то исправьте, а то она мне срочно надо.
Anton94.by вне форума Ответить с цитированием
Старый 02.03.2012, 01:12   #8
Anton94.by
Форумчанин
 
Регистрация: 16.10.2011
Сообщений: 115
Сообщение

Цитата:
Сообщение от Hacker19_90 Посмотреть сообщение
разукрашивание делается проще!
Если матрица делится главной диагональю то
Код:
if i < j then textcolor (blue);
if i > j then textcolor (red);
if i = j then textcolor (green);
всё что ниже голубое. что выше - красное, диагональ - зелёная
А вот что касается max и min , ТО мне интересно КАК ВЫ ИХ НАХОДИТЕ?
Сразу нахожу минимальный элимент, потом нахожу максимальный элимент. Потом прповеряю, где находятся элименты, т.е. если минимальный элимент расположе над главной диагональю, а максимальный под главной диагональю, то произвожу обмен, т.е. упорядочиваю столбцы матрицы не по убыванию методом линейного выбора с подсчетом. А если наоборот, то матрицу оставляю без изменения.
Anton94.by вне форума Ответить с цитированием
Старый 02.03.2012, 01:16   #9
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Неправильно вы это делаете!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 02.03.2012, 08:20   #10
Sidhe
Новичок
Джуниор
 
Аватар для Sidhe
 
Регистрация: 28.02.2012
Сообщений: 2
Радость

if (imin+jmin)*2 then
это не условие, в условии указывается сравнение, а тут где сравнение ?
DEBUG тебе на язык!
Sidhe вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана квадратная матрица А порядка n. Найдите сумму положительных элементов матрицы, стоящих под главной диагональю (Паскаль) Вовик-вовик Помощь студентам 1 10.01.2012 21:48
Поменять максимальный элемент матрицы на минимальный Margarita 2703 Паскаль, Turbo Pascal, PascalABC.NET 8 18.11.2011 13:42
Максимальный элемент выше главной диагонали матрицы (C#) Dj_SheLL Помощь студентам 2 14.02.2011 23:21
Найти мин элемент среди элементов который находится над главной диагональю. 2-х мерный масив bratello41 Общие вопросы C/C++ 0 20.12.2010 13:20
Паскаль! поменять местами максимальный и минимальный элемент матрицы. wrmarw Помощь студентам 4 08.05.2010 13:06