ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Заочный факультет
(дистанционная форма обучения)
Кафедра автоматизированных систем управления (АСУ)
ПРОГРАММИРОВАНИЕ
Контрольная работа №1
Дата выполнения работы: 04.08.2003
Дата проверки:_________
Оценка:_________
Преподаватель:__________________
Подпись преподавателя:___________
2003 г.
Контрольная работа № 1
№ варианта – 1.
Задание:
Задан массив чисел X[1..15]
.
Определить значение переменной у. Исходные данные и результат напечатать с пояснительным текстом.
у=
0,000135´А4, если А1³0.
Где А1
– сумма элементов массива Х;
А4
– сумма косинусов положительных элементов массива Х;
М1
– количество элементов массива Х, значения которых меньше А1.
Для решения задачи составим структурную схему алгоритма.
Для этого определиим используемые переменные и их тип.
Х[1..15]
– массив, состоящий из 15 элементов, каждый из которых записан в
экспоненциальной форме и имеет вещественный тип данных;
i
– номер очередного элемента;
n
– номер конечного элемента массива;
М1
- количество элементов массива, значения которых меньше суммы всех элементов массива.
Переменные i, n, M1
имеют целочисленный тип данных;
А1
– используется для подсчета суммы всех элементов массива Х;
А4
- используется для подсчета сумм косинусов положительных элементов массива Х;
у
- искомая по условию задачи переменная.
Переменные А1, А4, у
имеют вещественный тип данных.
Алгоритм выполнения:
Для генерации элементов массива используем процедуру
Randomize;
n:=15;
i:=1;
Генерируем элементы массива Х с помощью функции random
и выводим их на экран
while
i<=n do
begin
writeln (i,'-й член массива',random:10);
x[i]:=random;
i:=i+1;
end
;
Цикл будет повторятся n раз (в данном случае 15), генерируя новый элемент массива Х и заполняя таким образом массив данных.
Задаем начальные вычисляемые значения и выводим их на экран.
A1:=0;
A4:=0;
y:=0;
M1:=0;
Для вычисления суммы всех элементов массива Х и занесения этой суммы в переменную А1 используем цикл
i:=1;
while
i<=n do
begin
A1:=A1+X[i];
i:=i+1;
end
;
Определение на положительность каждого элемента массива.
Если элемент положителен, определяем его косинус и суммируем его значение в переменную
i:=1;
while
i<=n do
begin
if
X[i]>0
then
A4:=A4+cos(X[i]);
i:=i+1;
end
;
Определяем, меньше ли значения каждого элемента массива Х[i] по сравнению
с суммой всех элементов массива A1. Те элементы, значения которых меньше A1, суммируются количественно в переменную М1
i:=1;
while
i<=n do
begin
if
X[i]<A1
then
M1:=M1+1;
i:=i+1;
end
;
Проверка условия задачи и определение искомого значения у в соответствии с условием.
if
A1<0 then
y:=(A4*2.8E-03+A1)/(M1*A1+3E-01)
else
y:=A4*1.35E-04;
Листинг программы:
program kr1var1;
uses crt;
var
{задаем переменные и их тип}
X: array [1..15] of real;
i,n,M1:integer;
A1,A4,y:real;
s1:string;
begin
clrscr;
{используем процедуру генерации элементов массива}
randomize;
writeln;
n:=15;
i:=1;
{генерируем элементы массива Х и выводим их на экран}
while i<=n do
begin
writeln (i,'-й член массива',random:10);
x[i]:=random;
i:=i+1;
end;
{задание начальных значений и вывод их на экран}
A1:=0;
A4:=0;
y:=0;
M1:=0;
writeln;
writeln ('A1: ',A1:10);
writeln ('A4: ',A4:10);
writeln ('M1: ',M1);
writeln ('y: ',y:10);
{суммирование элементов массива и определение А1}
i:=1;
while i<=n do
begin
A1:=A1+X[i];
i:=i+1;
end;
{определение на положительность каждого элемента массива,
если элемент положителен, определяем его косинус и суммируем
значение записывается в переменную А4}
i:=1;
while i<=n do
begin
if X[i]>0
then A4:=A4+cos(X[i]);
i:=i+1;
end;
{определяем, меньше ли значения каждого элемента массива по сравнению
с суммой всех элементов массива. Те элементы, значения которых меньше суммы
всех элементов массива,суммируются количественно в переменную М1}
i:=1;
while i<=n do
begin
if X[i]<A1
then M1:=M1+1;
i:=i+1;
end;
{проверка условия задачи и определение искомого значения у
Вывод на экран результатов вычислений}
if A1<0 then
y:=(A4*2.8E-03+A1)/(M1*A1+3E-01)
else
y:=A4*1.35E-04;
writeln;
writeln;
writeln ('A1: ',A1:10);
writeln ('A4: ',A4:10);
writeln ('M1: ',M1);
writeln ('y: ',y:10);
readln;
end.