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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2014, 14:26   #1
Silver_Surfer
 
Регистрация: 19.12.2013
Сообщений: 6
По умолчанию Дана матрица У(к, к)

Всех с Новым Годом! Помогите, пожалуйста, сделать задачу. Условие такое:
Дана матрица У(к, к). Сформировать вектор, содержащий диагональные элементы матрицы У. Отсортировать его в порядке убывания элементов. Сортировку оформить как функцию (процедуру).
Silver_Surfer вне форума Ответить с цитированием
Старый 05.01.2014, 17:38   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
содержащий диагональные элементы матрицы
Какой из диагоналей то надо?
И кстати покажи код ввода матрицы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.01.2014, 17:52   #3
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от Silver_Surfer Посмотреть сообщение
... Отсортировать его в порядке убывания элементов. Сортировку оформить как функцию (процедуру).
См. " пузырек ". На форуме этих пузырьков полно напузырили.

Да и главные диагонали тоже часто выделяли.
type_Oleg вне форума Ответить с цитированием
Старый 05.01.2014, 23:04   #4
Silver_Surfer
 
Регистрация: 19.12.2013
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
И кстати покажи код ввода матрицы.
Код:
program pr5;
uses crt;
const n=3;
var a:array[1..n,1..n] of integer;
    i,j:integer;
begin clrscr;
writeln('Введите ',n*n,' элементов матрицы, целые числа:');
for i:=1 to n do
for j:=1 to n do
 begin
  write('a[',i,',',j,']=');
  readln(a[i,j]);
 end;
clrscr;
writeln('Матрица:');

for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    write(a[i,j]:4);

   end;
  writeln;
 end;
end.
Silver_Surfer вне форума Ответить с цитированием
Старый 05.01.2014, 23:22   #5
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от Silver_Surfer Посмотреть сообщение
.. Сформировать вектор, содержащий диагональные элементы матрицы У. ..
Код:
var diag:array[1..n] of integer; 
begin
// ...
 for i:=1 to n do diag[i]:=a[i,i];
если надо главную диаглналь
type_Oleg вне форума Ответить с цитированием
Старый 05.01.2014, 23:23   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Silver_Surfer, нормальный код.
теперь Вам нужно определиться с тем, какая именно диагональ (или даже диагонали) Вам нужна!
В зависимости от этого и будет размерность вашего вектора (читай, одномерного массива), который содержит нужные диагональные элементы.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.01.2014, 23:44   #7
Silver_Surfer
 
Регистрация: 19.12.2013
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
теперь Вам нужно определиться с тем, какая именно диагональ (или даже диагонали) Вам нужна!
В задании конкретно не указано диагональ, поэтому пусть будет главная.
Silver_Surfer вне форума Ответить с цитированием
Старый 06.01.2014, 00:22   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Silver_Surfer Посмотреть сообщение
В задании конкретно не указано диагональ, поэтому пусть будет главная.
ОК.
см. пост #5. Там написан код как раз для главной диагонали.

сортировку можете написать, например, так:
Код:
procedure BubleSortVector;
var i,j : integer;
  tmp : integer;
begin
   for i:=1 to n-1 do
     for j:=i to n do
     begin
       if diag[i]>diag[j] then
        begin
          tmp:=diag[i];
          diag[i]:=diag[j];
          diag[j]:=tmp;
        end;
     end;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.01.2014, 00:58   #9
Silver_Surfer
 
Регистрация: 19.12.2013
Сообщений: 6
По умолчанию

Serge_Bliznykov, что-то не могу всё собрать к одному целому. Помогите, пожалуйста.
Silver_Surfer вне форума Ответить с цитированием
Старый 06.01.2014, 01:19   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Silver_Surfer Посмотреть сообщение
Serge_Bliznykov, что-то не могу всё собрать к одному целому. Помогите, пожалуйста.
ну, так, например:
Код:
program pr5;
uses crt;
const n=3;
var
  a:array[1..n,1..n] of integer;
  diag:array[1..n] of integer;
  i,j:integer;
  
procedure BubleSortVector;
var i,j : integer;
  tmp : integer;
begin
   for i:=1 to n-1 do
     for j:=i to n do
     begin
       if diag[i]>diag[j] then
        begin
          tmp:=diag[i];
          diag[i]:=diag[j];
          diag[j]:=tmp;
        end;
     end;
end;
begin
clrscr;
writeln('Введите ',n*n,' элементов матрицы, целые числа:');
for i:=1 to n do
for j:=1 to n do
 begin
  write('a[',i,',',j,']=');
  readln(a[i,j]);
 end;
clrscr;
writeln('Матрица:');

for i:=1 to n do
 begin
  for j:=1 to n do
    write(a[i,j]:4);
  writeln;
 end;
 
 {заполним массив вектор элементами главной диагонали}
 for i:=1 to n do diag[i]:=a[i,i];
 
 {выведем элементы вектора на экран}
 Write('Вектор: ');
 for i:=1 to n do Write(diag[i],' ');
 WriteLn;
 
 { отсортируем вектор с помощью процедуры BubleSortVector }
 BubleSortVector;

 {выведем элементы вектора на экран}
 Write('Вектор после сортировки: ');
 for i:=1 to n do Write(diag[i],' ');
 WriteLn;


end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана матрица n*m... keb1 Помощь студентам 7 29.06.2013 11:06
дана матрица М на М. pedro1208 Паскаль, Turbo Pascal, PascalABC.NET 0 22.12.2012 16:30
Дана матрица dmdol Паскаль, Turbo Pascal, PascalABC.NET 8 19.12.2010 19:57