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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2017, 17:10   #1
os23
 
Регистрация: 18.11.2017
Сообщений: 5
По умолчанию двумерный массив

Помогите написать процедуру:
Необходимо отсортировать элементы каждой строки двумерного массива размером n*n, ниже главной диагонали по возрастанию методом выбора минимума
os23 вне форума Ответить с цитированием
Старый 19.11.2017, 05:22   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
const n=5;
var i,j,c,m,z:integer;
    p:array[1..n,1..n] of integer;
    a:array[1..n*n] of integer;
begin
   Randomize;
   For i:=1 to n do
   begin
      For j:=1 to n do
      begin
         p[i,j]:=Random(21);
         Write(p[i,j]:3,'  ');
      end;
      Writeln;
   end;
   Writeln;
   c:=0;
   For i:=1 to n do
      For j:=1 to n do
         If i>j then
         begin
            Inc(c);
            a[c]:=p[i,j];
         end;
   j:=1;
   Repeat
      m:=a[j];
      For i:=j+1 to c do
         If m>a[i] then
            m:=a[i];
      For i:=j to c do
         If m=a[i] then
         begin
            z:=a[i];
            a[i]:=a[j];
            a[j]:=z;
            Inc(j);
         end;
   Until j>=c;
   c:=0;
   For i:=1 to n do
      For j:=1 to n do
         If i>j then
         begin
            Inc(c);
            p[i,j]:=a[c];
         end;
   For i:=1 to n do
   begin
      For j:=1 to n do
         Write(p[i,j]:3,'  ');
      Writeln;
   end;
   Readln;
end.
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 19.11.2017, 10:14   #3
os23
 
Регистрация: 18.11.2017
Сообщений: 5
По умолчанию

спасибо большое, но тут необходимо, чтобы каждая строка была отсортирована по отдельности, независимо от других
os23 вне форума Ответить с цитированием
Старый 19.11.2017, 10:56   #4
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Для каждой строчки
Код:
const n=5;
var i,j,k,m,z:integer;
    p:array[1..n,1..n] of integer;
begin
   Randomize;
   For i:=1 to n do
   begin
      For j:=1 to n do
      begin
         p[i,j]:=Random(21);
         Write(p[i,j]:3,'  ');
      end;
      Writeln;
   end;
   Writeln;
   For k:=3 to n do
   begin
      j:=1;
      Repeat
         m:=p[k,j];
         For i:=j+1 to k-1 do
            If m>p[k,i] then
               m:=p[k,i];
         For i:=j to k-1 do
            If m=p[k,i] then
            begin
               z:=p[k,i];
               p[k,i]:=p[k,j];
               p[k,j]:=z;
               Inc(j);
            end;
      Until j>=k-1;
   end;
   For i:=1 to n do
   begin
      For j:=1 to n do
         Write(p[i,j]:3,'  ');
      Writeln;
   end;
   Readln;
end.
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 19.11.2017, 11:30   #5
СтудПом
Форумчанин
 
Регистрация: 08.11.2017
Сообщений: 347
По умолчанию

Цитата:
Сообщение от os23 Посмотреть сообщение
методом выбора минимума
-а что это за метод такой, можно его описание?
СтудПом вне форума Ответить с цитированием
Старый 19.11.2017, 12:02   #6
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Цитата:
Сообщение от СтудПом Посмотреть сообщение
-а что это за метод такой, можно его описание?
В массиве ищешь минимальное число.
Найденное число переносишь на начало массива (у меня в данном случае происходит обмен).

Например, исходный ряд:
5 8 4 7
Минимальное число - 4 (в моем коде переменная m = 4)
После обмена получается:
4 8 5 7
Далее со 2-й позиции (переменная j = 2) - 5
4 5 8 7
Далее с 3-й позиции - 7
4 5 7 8
Конец цикла

Я так писал!
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 19.11.2017, 12:14   #7
os23
 
Регистрация: 18.11.2017
Сообщений: 5
По умолчанию

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
Для каждой строчки
Код:
const n=5;
var i,j,k,m,z:integer;
    p:array[1..n,1..n] of integer;
begin
   Randomize;
   For i:=1 to n do
   begin
      For j:=1 to n do
      begin
         p[i,j]:=Random(21);
         Write(p[i,j]:3,'  ');
      end;
      Writeln;
   end;
   Writeln;
   For k:=3 to n do
   begin
      j:=1;
      Repeat
         m:=p[k,j];
         For i:=j+1 to k-1 do
            If m>p[k,i] then
               m:=p[k,i];
         For i:=j to k-1 do
            If m=p[k,i] then
            begin
               z:=p[k,i];
               p[k,i]:=p[k,j];
               p[k,j]:=z;
               Inc(j);
            end;
      Until j>=k-1;
   end;
   For i:=1 to n do
   begin
      For j:=1 to n do
         Write(p[i,j]:3,'  ');
      Writeln;
   end;
   Readln;
end.
Спасибо огромное за помощь, все отлично работает
os23 вне форума Ответить с цитированием
Старый 19.11.2017, 12:18   #8
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 19.11.2017, 12:20   #9
СтудПом
Форумчанин
 
Регистрация: 08.11.2017
Сообщений: 347
По умолчанию

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
В массиве ищешь минимальное число.
Найденное число переносишь на начало массива (у меня в данном случае происходит обмен).
-это называется "Сортировка выбором"
Если задача отсортировать по возрастанию, то требование "выбора минимума" становится абсурдным.
СтудПом вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переписывая все в новый массив,добавить в двумерный массив столбец с заданным номером. anasttb Общие вопросы C/C++ 0 24.05.2017 12:15
Программирование в VBA: двумерный массив M на N, нужно создать новый одномерный массив TheAnnihilyator Помощь студентам 1 04.06.2014 09:16
Java: Дан двумерный массив чисел А размером 6х6 и одномерный массив Х из 6-ти чисел. Заменить первые три строки массива A vikysha55 Помощь студентам 1 16.04.2014 10:50
Двумерный массив развернуть в одномерный массив по строкам[QBASIC] TrueStyle777 Помощь студентам 3 29.05.2013 21:56
Одномерный массив и Двумерный массив eugene1437 Общие вопросы C/C++ 15 25.05.2011 19:17