по дисциплине «Основы программирования»
Выполнил: ст-т гр. 19кп1
Пучков Дмитрий
Проверил: доцент каф. ИВС
Хохлов А. Е.
1 Формулировка задачи
Сгенерируйте последовательность А из n (3 ≤ n ≤ 10000) случайных веще-ственных чисел со значениями в интервале [-n..n] и выдайте числа большие их среднего значения, упорядочив их по убыванию.
2 Техническое задание
2.1 Требования к программе
Необходимо сгенерировать последовательность А из n (3 ≤ n ≤ 10000) случайных вещественных чисел со значениями в интервале [-n..n] и выдать числа большие их среднего значения, упорядочив их по убыванию.
2.2 Порядок контроля и приёмки
Для контроля правильности работы программы нужно ввести данные в заданной форме.
3 Описание программы
3.1 Общие сведения
Программа разработана в среде Lazarus, её текст приведен в приложении А.
3.2 Функциональное назначение
Программа предназначена для генерации последовательности А из n (3 ≤ n ≤ 10000) случайных веще-ственных чисел со значениями в интервале [-n..n] и выдайте числа большие их среднего значения, упорядочив их по убыванию.
![]() |
3.3 Описание логической структуры
Схема программы представлена на рисунке 1.
Решение задачи начинается с ввода переменных (m,n,i,j,k,jmx:integer; x,srznach:real;) (блок 2). Оператор присваивания (блок 3). Условие (блок 4). Вывод (блок 5).
Рисунок 1 – Схема программы
![]() |
|
|
![]() | ||
![]() |
|
Текст программы приведен в приложении А.
На форме расположены следующие объекты:
- одно текстовое поле Label1 с вкладки Standart. В свойстве Caption этого объекта помещено пояснение для пользователя программы:
Label1.Caption – 'Введите M '
- одно поле редактирования Edit1 с вкладки Standart - для ввода исходных данных;
- кнопка Button1 с вкладки Standart для создания обработчика события, который вычисляет ответ. В свойстве Caption этого объекта помещено пояснение для пользователя программы: Button1.Caption - 'Вычислить'.
Обработчик TForm1.Button1Click обрабатывает щелчок по кнопке «Вычислить». В разделе описания переменных этого обработчика описаны:
- переменные типа integer
- m,n,i,j,k,jmx– переменные;
- переменные типа real
- x,srznach:real
Исполняемая часть обработчика начинается с выполнения цикла (for i:=1 to m do). Затем происходит вычисление.
Для вывода результата используется написание на экран значения переменных a[10,9,8,7,6] которая переведена в вещественном значении.
4 Программа и методика испытаний
Для проверки правильности работы программы необходимо запустить ее на выполнение. После этого нажать левой кнопкой мыши на кнопку «Вычислить сумму». На форме появляется результат работы программы.
При работе программы с тестовыми данными получены результаты, приведенные в приложении Б на рисунках Б.1. Результаты приведенные в таблице 1 совпадают с результатами на рисунке Б.1. Таким образом, можно сделать вывод, что программа работает правильно
5 Описание применения
После запуска программы на выполнение на экране появляется форма с вопросом (см. Приложение Б). Пользователь должен нажать левой кнопкой мыши на кнопку «Вычислить». На форме появляется результат работы программы.
![]() |
Вывод
В ходе выполнения лабораторной работы было сформулировано и утверждено техническое задание на разработку программы, генерацию последовательности А из n (3 ≤ n ≤ 10000) случайных вещественных чисел со значениями в интервале [-n..n] и выдайте числа большие их среднего значения, упорядочив их по убыванию.
![]() |
ТЕКСТ ПРОГРАММЫ
Приложение А
(обязательное)
const nmax=10000;
var a: array [1..nmax] of real;
m,n,i,j,k,jmx:integer;
x,srznach:real;
Begin
srznach:=0;
randomize;
Repeat
write('Размер массива от 3 до ',nmax,' m = ');
readln(m);
until m in [3..nmax];
writeln('Исходный массив A:');
for i:=1 to m do
Begin
a[i]:=9*random;
write(a[i]:5:2);
end;
writeln;
n:=0;
i:=1;
while i<m do
Begin
jmx:=1;
for j:=1 to m-n do
if a[j]>a[jmx] then jmx:=j;
x:=a[jmx];
for k:=jmx to m-n-1 do
a[k]:=a[k+1];
a[m-n]:=x;
n:=n+1;
i:=i+1;
end;
writeln('Отсортированный массив:');
for i:=1 to m do
write(a[i]:5:2);
writeln;
writeln('Вывод среднего значения:');
for i:=1 to m do
srznach:=(a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]+a[9]+a[10])/10;
writeln(srznach:5:2);
writeln;
writeln('Вывод чисел больших среднего значения:');
for i:=1 to m do
Begin
if (a[1]<srznach) and (a[2]<srznach) and (a[3]<srznach) and (a[4]<srznach) and (a[5]<srznach) then
end;
writeln(a[10]:5:2);
writeln(a[9]:5:2);
writeln(a[8]:5:2);
writeln(a[7]:5:2);
writeln(a[6]:5:2);
writeln;
end.
![]() |
![]() |
РЕЗУЛЬТАТЫИСПЫТАНИЙ
Приложение Б
(обязательное)
![]() |
Рисунок Б.1