Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


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

Помогите написать процедуру:
Необходимо отсортировать элементы каждой строки двумерного массива размером n*n, ниже главной диагонали по возрастанию методом выбора минимума
os23 вне форума   Ответить с цитированием
Старый 19.11.2017, 06:22   #2
newerow1989
Я самый любопытный
Профессионал
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Адрес: RU, Алтайский край, Красногорский р-н, с. Балыкса, ул. Центральная Сообщений: 7,541 Репутация: 37104
Сообщений: 1,702
Репутация: 1522

skype: newerow1989
По умолчанию

Код:

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.narod.ru
[Паскаль] [Delphi]
newerow1989 вне форума   Ответить с цитированием
Старый 19.11.2017, 11:14   #3
os23
 
Регистрация: 18.11.2017
Сообщений: 5
Репутация: 10
По умолчанию

спасибо большое, но тут необходимо, чтобы каждая строка была отсортирована по отдельности, независимо от других
os23 вне форума   Ответить с цитированием
Старый 19.11.2017, 11:56   #4
newerow1989
Я самый любопытный
Профессионал
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Адрес: RU, Алтайский край, Красногорский р-н, с. Балыкса, ул. Центральная Сообщений: 7,541 Репутация: 37104
Сообщений: 1,702
Репутация: 1522

skype: 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.

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

Цитата:
Сообщение от os23 Посмотреть сообщение
методом выбора минимума
-а что это за метод такой, можно его описание?
СтудПом вне форума   Ответить с цитированием
Старый 19.11.2017, 13:02   #6
newerow1989
Я самый любопытный
Профессионал
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Адрес: RU, Алтайский край, Красногорский р-н, с. Балыкса, ул. Центральная Сообщений: 7,541 Репутация: 37104
Сообщений: 1,702
Репутация: 1522

skype: newerow1989
По умолчанию

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

Например, исходный ряд:
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.narod.ru
[Паскаль] [Delphi]
newerow1989 вне форума   Ответить с цитированием
Старый 19.11.2017, 13:14   #7
os23
 
Регистрация: 18.11.2017
Сообщений: 5
Репутация: 10
По умолчанию

Цитата:
Сообщение от 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, 13:18   #8
newerow1989
Я самый любопытный
Профессионал
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Адрес: RU, Алтайский край, Красногорский р-н, с. Балыкса, ул. Центральная Сообщений: 7,541 Репутация: 37104
Сообщений: 1,702
Репутация: 1522

skype: newerow1989
По умолчанию

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переписывая все в новый массив,добавить в двумерный массив столбец с заданным номером. anasttb Общие вопросы C/C++ 0 24.05.2017 13: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


00:08.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru