Автор: Пользователь скрыл имя, 30 Апреля 2013 в 13:23, контрольная работа
Составить программу для нахождения минимального и максимального элементов массива, а также индексов этих элементов. Ранжировать (упорядочить) одномерный массив по заданному признаку.
(9,56; -4,6; -12,45; 0,45; 98; 233; 5,09; -5,1; 0,004) по убыванию
1.Контрольное задание №7 3
2.Контрольное задание №8 6
3.Контрольное задание №9 8
4.Контрольное задание №10 11
5.Контрольное задание №11 14
Министерство образования науки, молодежи и спорта Украины
ДонГТУ
Кафедра ЭК и ИТ
Контрольная работа
По дисциплине: «Информатика»
Вариант №82
Выполнил: ст.гр. ЭПП-12-2з
Крымцева А.Ю.
Проверил: Хмелев А.Г.
Алчевск, 2012
СОДЕРЖАНИЕ
Контрольное задание № 7
Составить
программу для нахождения минимального
и максимального элементов
(9,56; -4,6; -12,45; 0,45; 98; 233; 5,09; -5,1; 0,004) по убыванию
Решение
Вначале найдем минимальный и максимальный элементы массива, а затем упорядочим его по убыванию
Блок-схема
+
Листинг программы
Program zadanie_7;
uses CRT;
var
i, j, i_max, i_min:integer;
a_max, a_min, buf:real;
A: array [1..9] of real;
begin
clrscr;
{Ввод исходного массива}
writeln ('Введите массив');
for i:=1 to 9 do
read (A[i]);
writeln ('Исходный массив:');
for i:=1 to 9 do write (A[i]:6:3, ' ');
{Нахождение наибольшего а наименьшего элементов}
a_max:=A[1];
a_min:=A[1];
i_max:=1;
i_min:=1;
for i:=2 to 9 do
begin
if (A[i]>a_max) then
begin
a_max:=A[i];
i_max:=i;
end;
if (A[i]<a_min) then
begin
a_min:=A[i];
i_min:=i;
end;
end;
{Ранжировка по убыванию}
for i:=1 to 8 do
for j:=i+1 to 9 do
if A[j]>A[i] then
begin
buf:=A[j]; A[j]:=A[i]; A[i]:=buf;
end;
{Вывод результатов}
writeln;
writeln ('Максимальный элемент = A[',i_max,']=',a_max:6:3);
writeln ('Минимальный элемент = A[',i_min,']=',a_min:6:3);
writeln('Массив после сортировки:');
for i:=1 to 9 do write (A[i]:7:3,' ');
end.
Результат работы программы
Контрольное задание № 8
Составить
программу вычисления корней квадратных
алгебраических уравнений
(ax2 + bx + c = 0), используя функцию
пользователя.
Примечание: в данных уравнениях значения коэффициентов a, b, c таковы, что дискриминант D = b2 – 4ac > 0
Решение
Блок-схема
Часть блок-схемы (вычислительные блоки) для процедуры Сv_u – решения квадратного уравнения с заданными коэффициентами a,b,c
Листинг программы
program Zadanie_8;
uses CRT;
var
a,b,c,k1,k2 : real;
{Процедура вычисления корней квадратного уравнения}
procedure kv_ur (var a:real; b:real; c:real; k1:real; k2:real);
var
d:real;
begin
d:=b*b-4*a*c;
d:=sqrt(d);
k1:=(-b+d)/2/a;
k2:=(-b-d)/2/a;
writeln('Коэффициенты a=',a:6:2,' b=',b:6:2,' c=',c:6:2);
writeln('Корни квадратного уравнения:',' k1=',k1:8:4,' k2=',k2:8:4);
end;
begin
clrscr;
{Первый вариант коэффициентов }
write('Введите коэффициенты a, b, c: ');
readln (a,b,c);
kv_ur(a,b,c,k1,k2);
{Второй вариант коэффициентов}
writeln;
write('Введите коэффициенты a, b, c: ');
readln (a,b,c);
kv_ur(a,b,c,k1,k2);
end.
Результат выполнения программы
Контрольное задание № 9
Элементы двумерных массивов выбрать произвольно. Вывести их на печать в формате и с заголовком. Для решения данной задачи использовать подпрограмму типа FUNCTION.
В матрицах У(2,8) и О(4,3) определить сумму элементов третьего столбца матрицы.
Решение
Блок-схема
Массивы формируются с помощью встроенной функции random ().
Функция Pechat () осуществляет печать массива в прямоугольном виде.
Функция Sred(, , ,k) подсчитывает среднее значение элементов k-го столбца матрицы.
Листинг программы
Program Zadanie_9;
Uses CRT;
type
mm = array [1..10, 1..10] of real;
var
l,i,j,n1m,n2m,n1p,n2p:
b:real;
my,mo: mm;
{Функция печати массивов}
Function Pechat(n1:integer; n2:integer; h:mm):real;
var
i,j:integer;
begin
writeln (' Массив размерности ',n1,'x',n2);
write(' ');
for l:=1 to n2*9 do write('_');
writeln;
for i:=1 to n1 do
begin
for j:=1 to n2 do
write(' I ',h[i,j]:6:3);
writeln(' I ');
write(' ');
for l:=1 to n2*9 do write('-');
writeln;
end;
writeln;
end;
{Функция подсчета среднего
Function Sred(n1:integer; n2:integer; h:mm; j:integer): real;
var
k:integer;
s:real;
begin
s:=0.0;
for k:=1 to n1 do
s:=s+h[k,j];
Sred:=s/n1;
end;
begin
clrscr;
{Формирование массива У}
writeln('Введите размерность массива У');
read(n1m,n2m);
for i:=1 to n1m do
begin
for j:=1 to n2m do
begin
my[i,j]:=random(100)*0.2;
end;
end;
{Формирование массива О}
writeln('Введите размерность массива О');
read(n1p,n2p);
for i:=1 to n1p do
begin
for j:=1 to n2p do
begin
mo[i,j]:=random(100)*0.3;
end;
end;
{ Печать массивов }
Pechat(n1m,n2m,my);
Pechat(n1p,n2p,mo);
writeln;
{ Подсчет средних значений 1-го и 3-го столбцов}
b:=Sred(n1m,n2m,my,1);
writeln ('Среднее значение элементов первого столбца массива У=',b:7:3);
b:=Sred(n1m,n2m,my,3);
writeln ('Среднее значение элементов третьего столбца массива У=',b:7:3);
b:=Sred(n1p,n2p,mo,1);
writeln ('Среднее значение элементов первого столбца массива O=',b:7:3);
b:=Sred(n1p,n2p,mo,3);
writeln ('Среднее значение элементов третьего столбца массива O=',b:7:3);
end.
Результат выполнения программы
Контрольное задание № 10
Задать два одномерных массива значений, чтобы величины элементов массивов попадали в заданный интервал на всем диапазоне (значения выбрать произвольно). Для решения данной задачи применить подпрограмму типа Procedure.
Т(15), L(8) Определить среднегеометрическое значение
(-1;3) положительных элементов двух массивов
Решение
Блок-схема
Массивы Т(15), L(8) формируются с помощью встроенной функции random. Для этого используется подпрограмма-процедура fmas.
Для замены определения среднегеометрического значения положительных элементов в массиве используется процедура kp
Листинг программы
Program Zadanie_10;
Uses CRT;
type mm=array [1..20] of real;
var mg,mk:mm;
n1,n2,k:integer;
s1,s2,x1,x2,p,sg:real;
{Процедура формирования массива}
procedure fmas(n:integer; x1:real; x2:real; var b:mm);
var k:integer;
begin
for k:=1 to n do
b[k]:=x1+(x2-x1)*random;
for k:=1 to n do
write(b[k]:6:3,' ');
writeln;
end;
{Процедура подсчета среднегеометрического значения
положительных элементов }
procedure kp (b:mm; n:integer; var k:integer; var p:real);
var i,l:integer;
begin
k:=0; sg:=0;
p:=1;
for i:=1 to n do
begin
if b[i]>0 then
begin
k:=k+1;
p:=p*b[i];
end;
end;
if k=0 then p:=0;
sg:=exp(ln(p)*k);
end;
{}
begin
clrscr;
writeln('Введите размеры массивов T и L');
read (n1,n2);
writeln('Введите интервал');
read (x1,x2);
writeln('Массив T');
fmas(n1,x1,x2,mg);
writeln;
writeln('Массив L');
fmas(n2,x1,x2,mk);
writeln;
kp(mg,n1,k,p);
writeln('Массив T:');
writeln('среднегеометрическое значения положительных элементов в массиве ',sg);
writeln;
kp(mk,n2,k,p);
writeln('Массив L:');
writeln('среднегеометрическое значения положительных элементов в массиве ',sg);
end.
Результаты работы программы
Контрольное задание № 11
Составить программу из 4 модулей.
Модуль 1. Сформировать одномерный массив А(35), значения элементов которого располагаются произвольным образом в диапазоне от -32 до 45. Сформировать из массива А новый массив В, элементы которого больше, чем значение максимального отрицательного элемента массива А. Записать массивы А и В в файлы параллельного доступа с именами М1.txt и М2.txt соответственно.
Модуль 2. Вывести данные из файлов М1.txt и М2.txt на экран и принтер в 5 столбцов с заголовками МАССИВ А и МАССИВ В. Массивы должны быть выведены с индексами (индексы изменяются по строке).
Модуль 3. Выполнить сортировку данных в файле М1.txt по возрастанию, а в файле М2.txt по убыванию. Для сортировки использовать подпрограмму типа SUB. Сортировать не элементы массивов, а записи в файлах.
Модуль 4. Вывести данные из файлов М1.txt и М2.txt на экран и принтер в 3 строки с заголовками ОТСОРТИРОВАННЫЙ МАССИВ А и ОТСОРТИРОВАННЫЙ МАССИВ В. Массивы должны быть выведены с индексами (индекс изменяется по столбцу)
Решение
Структурная блок-схема
Листинг программы
{ Головная программа}
Program modul;
Uses CRT, Mod1, Mod2, Mod3, Mod4;
var
a,b: mas;
n_b,n:integer;
begin
clrscr;
begin form_a(a);
form_b(a,b,n_b);
end;
Pec1(1,35);
writeln;
Pec1(2,n_b);
writeln;
Sort_v(1,35);
Sort_u(2,n_b);
Pec2(1,35);
writeln;
Pec2(2,n_b);
end.
Unit Mod1;
INTERFACE
type
mas = array [1..35] of real;
var
fa, fb:file of real;
s:real;
Procedure form_a(var a:mas);
Procedure form_b(a:mas; var b:mas; var n:integer);
IMPLEMENTATION
{Формирование массива А и запись его в файл М1.txt}
Procedure form_a(var a:mas);
var i,k:integer;
begin
assign (fa,'M1.txt');
rewrite(fa);
s:=100;
for i:=1 to 35 do
begin
a[i]:=-32+(45+32)*random;
write (fa,a[i]);
if a[i]<s then s:=a[i];
end;
writeln('максимальный отрицательный элемент масссива А=',s:6:2);
writeln;
close (fa);
end;
{Формирование массива В и запись его в файл М2.txt}
Procedure form_b(a:mas; var b:mas; var n:integer);
var
i,i_f: integer;
pol:real;
begin
assign (fb,'M2.txt');
rewrite (fb);
n:=0;
for i:=1 to 35 do
begin
if a[i]>s then
begin
n:=n+1;
b[n]:=a[i];
write(fb,b[n]);
end;
end;
close (fb);
end;
end.
Unit Mod2;
Interface
Procedure Pec1(k_p:integer; n:integer);
IMPLEMENTATION
{Процедура печати массивов в 7 столбцов}
Procedure Pec1(k_p:integer; n:integer);
var i,j,d,k:integer;
f: file of real;
c:char;
p:real;
begin
if k_p=1 then
begin
writeln('Массив A');
c:='A';
assign(f,'M1.txt');
end
else
begin
writeln('Массив B');
c:='B';
assign(f,'M2.txt');
end;