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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2011, 10:19   #1
PHARAoN91
 
Регистрация: 15.10.2011
Сообщений: 6
По умолчанию Реализовать программу с подпрограммой-функцией

По условию задачи: Осуществить поворот смежных с элементом матрицы [I,J] элементов на 90 градусов против часовой стрелки (1<I<N,1<J<M). Реализовать данную программу с подпрограммой-функцией, например, ввод и вывод в соответствующих подпрограммах-процедурах (как уже сделано), а обработка (в данном случае procedure rotate_array) в подпрограмме-функции. Обрабатываемые данные передаются программе-функции через параметры.
Код:
program rotate_array90;
uses crt;
const N=20; M=20;
type
massiv = array[1..N,1..M] of integer;
var mas:massiv;
i,j,x,y:integer;
procedure form_array(var a:massiv; x,y:integer);
var i,j:integer;
begin
randomize;
for i:=1 to y do
  for j:=1 to x do
  a[i,j]:=random(100);
end;
procedure print_array(a:massiv; x,y:integer);
var i,j:integer;
begin
for i:=1 to y do
begin
writeln;
  for j:=1 to x do
  Write('  ',a[i,j])
end;
end;
procedure rotate_array(var a:massiv;x,y,i,j:integer);
var mas1,mas2:array[1..8] of integer;
k:integer;
begin
if ((i<>1) and (j<>1) and (i<>y) and (j<>x)) then
begin
mas1[1]:=a[i-1,j-1];
mas1[2]:=a[i,j-1];
mas1[3]:=a[i+1,j-1];
mas1[4]:=a[i+1,j];
mas1[5]:=a[i+1,j+1];
mas1[6]:=a[i,j+1];
mas1[7]:=a[i-1,j+1];
mas1[8]:=a[i-1,j];
for k:=1 to 8 do
if (k+1)>8 then
mas2[k+1-8]:=mas1[k]
else
  mas2[k+1]:=mas1[k];
a[i-1,j-1]:=mas2[1];
a[i-1,j]:=mas2[2];
a[i-1,j+1]:=mas2[3];
a[i,j+1]:=mas2[4];
a[i+1,j+1]:=mas2[5];
a[i+1,j]:=mas2[6];
a[i+1,j-1]:=mas2[7];
a[i,j-1]:=mas2[8];
end else
writeln('Неправильные числа - не вращаются');
end;
begin
writeln('Введите количество строк: ');
readln (y);
writeln('Введите количество столбцов: ');
readln (x);
  form_array(mas,x,y);
writeln('Исходная матрица');
  print_array(mas,x,y);
 writeln('Введите номер строки i: ');
readln (i);
  writeln;
writeln('Введите номер столбца j: ');
readln (j);
  writeln;
  writeln('i = ',i,' j = ',j);
writeln('Поворот смежных элементов [i,j] матрицы против часовой стрелки');
  rotate_array(mas,x,y,i,j);
  writeln;
  print_array(mas,x,y);
  readln;
end.
Помогите пожалуйста, сроки поджимают...
PHARAoN91 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
написать программу с подпрограммой функции marmarmar Паскаль, Turbo Pascal, PascalABC.NET 0 22.05.2011 12:55
Написать программу с рекурсивной функцией, вычисляющей: S по формуле. Figushkin Помощь студентам 8 04.06.2010 14:58
Реализовать программу archyk Фриланс 1 05.03.2010 21:16
помогити реализовать программу на С++ Lorden Помощь студентам 12 09.03.2009 11:46
срочно нужно реализовать программу... LoL Паскаль, Turbo Pascal, PascalABC.NET 4 19.01.2009 17:01