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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2013, 16:52   #1
Anka1101
Пользователь
 
Регистрация: 31.01.2013
Сообщений: 20
По умолчанию использование подпрограмма

У меня есть решенная программа,но ее нужно как то упростить так как я не понимаю ее смысла.....
вот задание:
1)Сгенерировать 2 массива А и В случайных вещественных чисел в диапазоне [-20;12].генерацию осуществить с помощью процедуры.
2)упорядочить оба массива по возрастанию.упорядочение осуществить в процедуре.
3)объединить два упорядоченных массива А и В в один упорядоченный массив С
4)найти произведение элементов массива С.

вот такая программа:

Const
cArrSize = 10;
Type
tArr = Array [0..cArrSize - 1] Of Real;
tArrC = Array [0..cArrSize * 2 - 1] Of Real;

Var
A, B: tArr;
C: tArrC;
Prod: Real;

Procedure GenerateArr(Var aArr: tArr);
Var
I: Integer;
Begin
For I:= 0 To cArrSize - 1 Do aArr[I]:= Random * 33 - 20;

End;

Procedure SortArr(Var aArr: Array Of Real; aArrSize: Integer);
Var
I, J: Integer;
TempR: Real;
Begin
For I:= aArrSize - 1 DownTo 0 Do
For J:= 0 To I - 1 Do
If aArr[J] > aArr[J + 1] Then Begin
TempR:= aArr[J];
aArr[J]:= aArr[J + 1];
aArr[J + 1]:= TempR;
End;
End;


Procedure MergeArrs(Var aResArr: tArrC; Var aArr1: tArr; Var aArr2: tArr);
Var
I: Integer;
Begin
For I:= 0 To cArrSize - 1 Do aResArr[I]:= aArr1[I];
For I:= cArrSize To cArrSize * 2 - 1 Do aResArr[I]:= aArr2[I - cArrSize];
SortArr(aResArr, cArrSize * 2);
End;


Var
I: Integer;

Begin
Randomize;
GenerateArr(A);
GenerateArr(B);
SortArr(A, cArrSize);
SortArr(B, cArrSize);
MergeArrs(C, A, B);
Prod:= 1.0;
For I:= 0 To cArrSize * 2 - 1 Do Prod:= Prod * C[I];
WriteLn('Prod = ', Prod:7:3);

ReadLn;
End.



Я не понимаю почти всю программу(то что не понимаю красным цветом),кто сможет помогите пожалуйста!!!!Буду очень вам признательна!

Последний раз редактировалось Anka1101; 04.06.2013 в 16:53. Причина: БЫЛА ДОПУЩЕНА ОШИБКА
Anka1101 вне форума Ответить с цитированием
Старый 04.06.2013, 18:16   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
Const
cArrSize = 10; Описываем константу со значением 10
Type В секии типов
tArr = Array [0..cArrSize - 1] Of Real; Описываем массив от нуля до 10-1 вещественных
tArrC = Array [0..cArrSize * 2 - 1] Of Real;И такой-же но в два раза больше
Var
A, B: tArr; Описываем переменные этих типов (массивов)
C: tArrC;
Prod: Real;

Пишем процедуру, которая наполняет массив, передаваемывй ей
случайными чмслами
Procedure GenerateArr(Var aArr: tArr);
Var
I: Integer;
Begin
For I:= 0 To cArrSize - 1 Do aArr[I]:= Random * 33 - 20;
End;

И процедуру, что сортирует передаваемый ей массив судя по всему
Пузырьковой сортировкой
Procedure SortArr(Var aArr: Array Of Real; aArrSize: Integer);
Var
I, J: Integer;
TempR: Real;
Begin
For I:= aArrSize - 1 DownTo 0 Do
For J:= 0 To I - 1 Do
If aArr[J] > aArr[J + 1] Then Begin
TempR:= aArr[J];
aArr[J]:= aArr[J + 1];
aArr[J + 1]:= TempR;
End;
End;

Потом процедуру, которая... Я не очень понял что она делает
Procedure MergeArrs(Var aResArr: tArrC; Var aArr1: tArr; Var aArr2: tArr);
Var
I: Integer;
Begin
For I:= 0 To cArrSize - 1 Do aResArr[I]:= aArr1[I];
For I:= cArrSize To cArrSize * 2 - 1 Do aResArr[I]:= aArr2[I - cArrSize];
SortArr(aResArr, cArrSize * 2);
End;

Var
I: Integer;

Begin
Включаем случайный генератор
Randomize;

Наполняем массивы по очереди. Сначала маленький
GenerateArr(A);
Потом большой
GenerateArr(B);

Сортируем их
SortArr(A, cArrSize);
SortArr(B, cArrSize);

Еще что-то....
MergeArrs(C, A, B);

Далее получаем какой-то коэффициент массива.
Что-то из матричных преобразований видимо
Prod:= 1.0;
For I:= 0 To cArrSize * 2 - 1 Do Prod:= Prod * C[I];
WriteLn('Prod = ', Prod:7:3);
ReadLn;
End.
Помогло?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.06.2013, 02:47   #3
Anka1101
Пользователь
 
Регистрация: 31.01.2013
Сообщений: 20
По умолчанию

относительно
Anka1101 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подпрограмма Petyu C++ Builder 11 23.03.2013 08:23
Подпрограмма wersat C# (си шарп) 1 16.01.2013 23:25
Подпрограмма на С++ serega260394 Помощь студентам 2 23.12.2010 09:37
Подпрограмма serega260394 Помощь студентам 1 18.12.2010 07:26
подпрограмма alex1313 Паскаль, Turbo Pascal, PascalABC.NET 2 02.04.2009 21:13