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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2013, 02:39   #1
Eld
 
Регистрация: 22.05.2013
Сообщений: 7
По умолчанию Программа выбирает в двумерном массиве максимальные и минимальные элементы и сортирует эти элементы в порядке возрастания.

Программа выбирает в двумерном массиве максимальные и минимальные элементы и сортирует эти элементы в порядке возрастания, затем выводит оригинальную(после расчетов) и полученную(после сортировки) матрицу.


P.S. Оригинальная матрица есть. Никак не могу придумать как осуществить сортировку в двумерном массиве. Можете помочь ее сделать?

Код:
program kyr;

uses
  crt;

const
  n = 9;


procedure Power(x: real; n: integer; var y: real);
begin
  if N = 0 then 
    Y := 1 
  else begin
    Power(X, N - 1, Y); 
    Y := Y * X; 
  end; 
end;


function factorial(n: integer): longint;
begin
  if n = 0 then factorial := 1 
  else factorial := factorial(n - 1) * n; 
end;


type
  matrix = array[1..3, 1..3]of real;


var
  f: matrix; 
  sum, o: real;
  i, k, l, x: integer;
  znam: array[0..9]of real;
  chisl: array[0..9]of real;


begin
  clrscr;
  writeln('Введите х');
  readln(x);
  
  for i := 0 to n do
  begin
    power(x, i, chisl[i]);
    write(chisl[i], '  ');
  end;
  
  writeln;
  
  for i := 0 to n do
  begin
    znam[i] := factorial(i);
    write(znam[i], '  ');
  end;
  writeln;
  
  sum := 0;
  k := 1;
  l := 1;
  while (k <= 3) and (l <= 3) do
  begin
    sum := sum + chisl[(k - 1) * 3 + l - 1] / znam[(k - 1) * 3 + l - 1];
    f[k, l] := exp(sum);
    inc(l);
    if (l = 4) then
    begin
      l := 1;
      inc(k);
    end;
  end;
  for k := 1 to 3 do
  begin
    for l := 1 to 3 do
      write('f[', k, ',', l, ']=', f[k, l], '  ');
    writeln;
  end;
  writeln;
end.
P.S. Отлаживал на ABC.NET.

Последний раз редактировалось Eld; 22.05.2013 в 02:41.
Eld вне форума Ответить с цитированием
Старый 22.05.2013, 08:23   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как осуществить сортировку в двумерном массиве.
Как пример:
Код:
for i:=1 to 3 do for j:=1 to 3 do for k:=1 to 3 do 
 if f[i,j]<f[i,k] then begin
   n:=f[i,j]; f[i,k]:=f[i,j]; f[i,k]:=n;
 end;
Где i j k - целые а n - вещественное
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.05.2013, 23:15   #3
Eld
 
Регистрация: 22.05.2013
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Eld Посмотреть сообщение
Программа выбирает в двумерном массиве максимальные и минимальные элементы и сортирует эти элементы в порядке возрастания, затем выводит оригинальную(после расчетов) и полученную(после сортировки) матрицу.
Конечно хотелось что бы показали как сделать так.
Eld вне форума Ответить с цитированием
Старый 23.05.2013, 08:17   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Конечно хотелось что бы показали как сделать так.
Показал что? Код в топе?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.05.2013, 01:23   #5
Eld
 
Регистрация: 22.05.2013
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Показал что? Код в топе?
Я код написал, он проводит расчет и записывает в матрицу 3х3 результат.
Мне нужно мою матрицу отсортировать в порядке возрастания. У меня ничего к сожалению не выходит.
Eld вне форума Ответить с цитированием
Старый 24.05.2013, 08:19   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
У меня ничего к сожалению не выходит.
Ну а пример, что я дал, ты пробовал?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.05.2013, 23:14   #7
Eld
 
Регистрация: 22.05.2013
Сообщений: 7
По умолчанию

Ваш пример сортирует только строки, может я конечно не понял задания. Но вроде матрица должна иметь примерно такой вид:
0,1453 0,432234 1,232344
2,454534 3,54333 4,224344
4,643432 4,94343 5,34323369
Eld вне форума Ответить с цитированием
Старый 25.05.2013, 09:02   #8
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Программа выбирает в двумерном массиве максимальные и минимальные элементы и сортирует эти элементы в порядке возрастания, затем выводит оригинальную(после расчетов) и полученную(после сортировки) матрицу.
пардон, что вмешиваюсь, но...
даже одномерный массив имеет несколько законов сортировки (два основных: по убыванию, по возрастанию), двумерный же имеет их в порядке больше (по столбцам, по строкам, по диагонале, по левой выключке, по-еврейски, по второстепенной диагонале ... etc)
КАК сортировать-то надо?
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 25.05.2013, 14:43   #9
Eld
 
Регистрация: 22.05.2013
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Naive Посмотреть сообщение
пардон, что вмешиваюсь, но...
даже одномерный массив имеет несколько законов сортировки (два основных: по убыванию, по возрастанию), двумерный же имеет их в порядке больше (по столбцам, по строкам, по диагонале, по левой выключке, по-еврейски, по второстепенной диагонале ... etc)
КАК сортировать-то надо?
Да в том то и дело что я не предполагаю как. Это моя курсовая работа. Спрашивал препода, он просто отвечает: "в порядке возрастания".
Я предполагаю что по строкам. Но как я выше показал, в первой строке последний элемент меньше чем первый элемент второй строки. Скорее всего имеется ввиду такая сортировка.

Последний раз редактировалось Eld; 25.05.2013 в 20:12.
Eld вне форума Ответить с цитированием
Старый 25.05.2013, 15:53   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Ваш пример сортирует только строки
Ладно. Пойдем другим путем:
Код:
type PReal=^Real;
var q,w:PReal;
...
q:=@f[1,1]; 
w:=q;
for i:=1 to 3*3 do  begin
 for j:=1 to 3*3 do begin
  if q^<w^ then begin
   n:=q^; q^:=w^; w^:=n;
  end;
  inc(w);
 end;
 inc(q);
end;
...
Не проверял но должно сработать. Матрица благодаря указателям превращается в одномерный массив.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Занулить максимальные элементы в массиве. Leshii Паскаль, Turbo Pascal, PascalABC.NET 6 24.01.2012 23:49
В двумерном вещественном массиве 4x4 переставить строки в порядке возрастания максимальных элементов строк (Паскаль) 77SEMI77 Помощь студентам 0 20.01.2012 00:42
в массиве все максимальные элементы заменить первым элементом, а все минимальные элементы заменить последним элементом Валерия2701 Паскаль, Turbo Pascal, PascalABC.NET 1 12.10.2011 15:49
расположить элементы матрицы в порядке возрастания. Cer)I(ik Паскаль, Turbo Pascal, PascalABC.NET 2 07.04.2011 00:29
Расположить элементы массива в порядке возрастания Klik_1602 Помощь студентам 2 04.01.2011 14:59