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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2011, 21:12   #1
sifa
Пользователь
 
Регистрация: 23.11.2011
Сообщений: 13
По умолчанию ПЕРЕДАЧА МАССИВА В ПРОЦЕДУРУ ЧЕРЕЗ СПИСОК ФОРМАЛЬНЫХ ПАРАМЕТРОВ.

Написать подпрограмму-процедуру(функцию) общего назначения для преобразования
матрицы А произвольного размера (n*m) по следующей формуле:

А[I,J]=A[I,J]/максимальный элемент из минимальных элементов каждой строки


Первоначально исходная матрица А заполняется случайными числами в основной
программе до вызова процедуры(функции),затем она преобразуется по заданной
выше формуле внутри самой процедуры.

Требуется, используя процедуру(функцию), получить из матрицы А[n,m]
матрицу В[5,5] и матрицу C[3,3].
_____________
| | |
| B | |
| | |
|______| A |
| |
| |
|_____________|

Все матрицы передаются в процедуру(функцию) через список формальных
параметров.
Результирующие матрицы В и С распечатываются в основной
программе после вызова процедуры(функции).
sifa вне форума Ответить с цитированием
Старый 29.11.2011, 22:13   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Предлагаю концепцию динамических массивов:
Код:
MODULE Hortiza;
IMPORT StdLog,ObxRandom;
TYPE

(*Это наш массив любой длинны*)
VAR  a:POINTER TO ARRAY OF ARRAY OF INTEGER;

(*Резервирует и наполняет случайными значениями массив любой длинны*)
PROCEDURE inn(VAR a:POINTER TO ARRAY OF ARRAY OF INTEGER;n,m:INTEGER);
VAR i,j:INTEGER;
BEGIN
 NEW(a,n,m);
 FOR i:=0 TO LEN(a)-1 DO
  FOR j:=0 TO LEN(a[i])-1 DO
    a[i,j]:=SHORT(ENTIER(50-ObxRandom.Uniform()*100));
    StdLog.Int(a[i,j]);
    StdLog.Tab;
  END;
  StdLog.Ln; 
 END;
END inn;

(*Переформировывает массив*)
PROCEDURE Renova(VAR a:POINTER TO ARRAY OF ARRAY OF INTEGER;n,m:INTEGER);
VAR i,j:INTEGER;
BEGIN
 FOR i:=0 TO LEN(a)-1 DO
  FOR j:=0 TO LEN(a[i])-1 DO
    a[i,j]:=a[i,j]*12;
    StdLog.Int(a[i,j]);
    StdLog.Tab;
  END;
  StdLog.Ln; 
 END;
END Renova;
(*Здесь вместо числа 12 подставляй вычисления твоих максимумов*)

PROCEDURE do*;
VAR n,k,e:INTEGER;
BEGIN
 StdLog.Clear;
 (*Формируем массив 3х3*)
 inn(a,3,3);
 (*Проводим с его элементами реорганизацию*)
 Renova(a,3,3);
 a:=NIL;
END do;

END Hortiza.
Hortiza.do;
Идея понятна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передача массива записей в процедуру lionbeast Помощь студентам 0 13.01.2011 19:03
Передача массива в процедуру... nXs Общие вопросы Delphi 3 12.08.2010 16:40
Передача параметров через ссылку xxxsas PHP 6 10.08.2009 21:09
Передача параметров в функцию через ссылку Vistar Общие вопросы C/C++ 1 07.05.2009 02:27
передача массива в процедуру Gash Общие вопросы Delphi 1 01.02.2009 00:30