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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2013, 20:57   #1
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
Восклицание Procedure вывода элементов матрицы, которые находятся между диагоналями (дописать в программу) Pascal ABC

добрый вечер, уважаемые программисты. помогите, пожалуйста написать программу (а именно, написать Function, которая будет взаимодействовать с программой, которая написана ниже).

Код:
program jh_1;
uses crt;
type a=array[1..20,1..20] of integer;
     sort=array[1..20,1..20] of integer;
var n:integer;
    massiv:a;
    mass:sort;
i,j:integer;

procedure vid(n:integer);
var i,j:integer;
begin
  for i:=1 to n do begin
    for j:=1  to n do begin
      massiv[i,j]:=random(9)-5;
      write(massiv[i,j],'  ');
      end;      
      writeln;
      end;      
end;


procedure sor(n,i,j:integer);
var T,k,l:integer;
begin
mass:=massiv;
 for l:=1 to n do begin
       For i:=2  to n do 
           Begin  T:=mass[l,i];   j:=1;
                  While  T>mass[l,j] do  j:= j +1;
                  For k:=i-1 downto  j do mass[l,k+1] := mass[l,k];   mass[l,j]:=T;
           End;
        end;
       Writeln ('Упорядкований масив: ');
  for l:=1 to n do begin
   For i := 1 to n do Write(mass[i,l],' ');  Writeln;end;
end;



begin
clrscr;
writeln('введите розмер матрицы');
readln(n);
vid(n);
sor(n,i,j);
end.
эта программа работает праильно. про программу: в основной программе вводится размер матрицы, в Procedure Vid вводится матрица с помощью генератора случайных чисел Randomize, в Procedure Sort производится сортировка строк по спаданию.

написать в эту программу подпрограмму (Procedure) вывода элементов матрицы, которые находятся между диагоналями.

заранее, огромное спасибо.

Последний раз редактировалось Stilet; 06.06.2013 в 08:18.
программирование вне форума Ответить с цитированием
Старый 06.06.2013, 07:32   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Офигеть. То есть Вы смогли написать

Цитата:
Procedure Sort производится сортировка строк по спаданию.
которая на порядок посложнее, чем

Цитата:
(Procedure) вывода элементов матрицы, которые находятся между диагоналями.



Ну держите:

Код:
Procedure NotDiagElem(n: integer; mas: a);
var i,j: integer;
begin
  for i:=1 to N do
    for j:=1 to N do
      if (i<>j) and ((n-i+1)<>j) then WriteLn(mas[i,j]);
end;
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 06.06.2013, 07:45   #3
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
которые находятся между диагоналями.
имхо != не диагональные
Код:
for i:=1 to n div 2  do  begin
For j:= i+1 to  n-i do
write(mas[i,j],' ');
writeln;
end;
for i:= n div 2+1 to n  do begin
For j:= n-i+2 to  i-1 do
write(mas[i,j],' ');
writeln;
end;
Цитата:
9 3 2 9 9 4 1 8
2 4 8 2 3 1 3 0
0 0 2 6 5 7 1 3
6 7 5 0 6 9 8 7
4 8 3 1 8 6 7 8
3 2 8 9 4 5 7 0
5 0 0 2 1 1 8 9
6 4 1 7 5 3 6 1
=======================
3 2 9 9 4 1
8 2 3 1
6 5


9 4
0 2 1 1
4 1 7 5 3 6
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"

Последний раз редактировалось Mad_Cat; 06.06.2013 в 07:54.
Mad_Cat вне форума Ответить с цитированием
Старый 06.06.2013, 09:18   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Mad_Cat, ТС создал тему дубликат в разделе помощи студентам (тыц) Там он предоставил "картинку" как должна будет выглядеть матрица. Но форумное форматирование эту картинку испортило.. Но на почту всё пришло в целости и сохранности
Код:
      X   X   X    
X        X        X
X   X        X   X	
X        X        X
     X   X   X
Sciv c его экстрасенсорными способностями написал именно то, что хотел ТС

Только можно я устрою маленькие дебаты?
Цитата:
Код:
Procedure NotDiagElem(n: integer; mas: a);
Почему здесь не const ? Сразу 2 соображения в защиту const'a :
1) Мы просто выводим, ничего менять не нужно, НО нечаянно мы нажали n := <что-то не хорошее>, и всё..
2) Это память.. Будет у нас N = мильёну, и тут мы отведем сразу 2 место под хранение его.. А не жирно будет?
Poma][a вне форума Ответить с цитированием
Старый 06.06.2013, 10:04   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если уж дебаты, то нужно вспомнить о возможных проблемах со стеком, если mas достаточно большой и передается именно таким способом - по значению
Цитата:
Будет у нас N = мильёну, и тут мы отведем сразу 2 место под хранение его.. А не жирно будет?
А ни чего и не отведем. Только ошибка вывалится, если дальше попытаемся обратиться к не существующему элементу массива
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 06.06.2013 в 10:10.
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Function нахождения максимального элемента матрицы (дописать в программу) Pascal ABC программирование Помощь студентам 10 05.06.2013 23:18
Дописать программу на Pascal ABC daniil-640 Помощь студентам 1 08.06.2012 19:54
Дописать программу на Pascal ABC daniil-640 Помощь студентам 3 30.05.2012 15:32
Как найти сумму элементов матрицы, которые находятся выше главной диагонали????? ВДПУ Помощь студентам 3 27.05.2012 11:55
Вычислить сумму тех элементов преобразованного массива, которые находятся в диапазоне [–1, 16] Mirel Паскаль, Turbo Pascal, PascalABC.NET 2 04.04.2010 10:58