Программы нахождения массивов
Министерство
образования науки, молодежи и спорта Украины
ДонГТУ
Кафедра
ЭК и ИТ
Контрольная работа
По
дисциплине: «Информатика»
Вариант
№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;, j, i_max,
i_min:integer;_max, a_min, buf:real;: array [1..9] of real;;
{Ввод исходного массива}
writeln
('Введите массив');
for i:=1 to 9 do(A[i]);('Исходный
массив:');i:=1
to 9 do write (A[i]:6:3, ' ');
{Нахождение наибольшего а наименьшего элементов}
a_max:=A[1];_min:=A[1];_max:=1;_min:=1;i:=2
to 9 do(A[i]>a_max) then_max:=A[i];_max:=i;;(A[i]<a_min)
then_min:=A[i];_min:=i;;;
{Ранжировка по убыванию}i:=1 to 8 do
for j:=i+1 to 9 doA[j]>A[i]
then:=A[j]; A[j]:=A[i]; A[i]:=buf;;
{Вывод
результатов};('Максимальный
элемент
= A[',i_max,']=',a_max:6:3);('Минимальный
элемент
= 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;CRT;,b,c,k1,k2 :
real;
{Процедура вычисления корней квадратного
уравнения}
procedure kv_ur (var a:real; b:real;
c:real; k1:real;
k2:real);:real;:=b*b-4*a*c;:=sqrt(d);:=(-b+d)/2/a;:=(-b-d)/2/a;('Коэффициенты
a=',a:6:2,' b=',b:6:2,' c=',c:6:2);
writeln('Корни
квадратного уравнения:',' k1=',k1:8:4,' k2=',k2:8:4);;;
{Первый
вариант коэффициентов }('Введите коэффициенты a, b, c: ');
readln (a,b,c);_ur(a,b,c,k1,k2);
{Второй
вариант коэффициентов};('Введите коэффициенты a, b, c: ');
readln (a,b,c);_ur(a,b,c,k1,k2);
end.
Результат
выполнения программы
Контрольное
задание № 9
Элементы двумерных массивов выбрать произвольно.
Вывести их на печать в формате и с заголовком. Для решения данной задачи
использовать подпрограмму типа FUNCTION.
В матрицах У(2,8) и О(4,3) определить сумму
элементов третьего столбца матрицы. программа массив одномерный уравнение
Решение
Блок-схема
Массивы формируются с помощью встроенной функции
random ().
Функция Pechat
() осуществляет печать массива в прямоугольном виде.
Функция Sred(,
, ,k) подсчитывает
среднее значение элементов k-го
столбца матрицы.
Листинг
программы
Program Zadanie_9;CRT;= array
[1..10, 1..10] of real;,i,j,n1m,n2m,n1p,n2p:integer;:real;,mo: mm;
{Функция
печати
массивов}Pechat(n1:integer;
n2:integer; h:mm):real;,j:integer; (' Массив
размерности ',n1,'x',n2);
write(' ');l:=1 to n2*9 do
write('_');;i:=1 to n1 doj:=1 to n2 do(' I ',h[i,j]:6:3);(' I ');(' ');l:=1 to
n2*9 do write('-');
writeln;;;;
Function Sred(n1:integer;
n2:integer; h:mm; j:integer): real;:integer;:real;:=0.0;k:=1 to n1
do:=s+h[k,j];:=s/n1;
end;;
{Формирование массива У}('Введите размерность
массива У');
read(n1m,n2m);i:=1 to n1m doj:=1 to
n2m do[i,j]:=random(100)*0.2;
end;;
{Формирование массива О}('Введите размерность
массива О');
read(n1p,n2p);i:=1 to n1p doj:=1 to
n2p do[i,j]:=random(100)*0.3;;;
{ Печать массивов }
Pechat(n1m,n2m,my);
Pechat(n1p,n2p,mo);;
{ Подсчет средних значений 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);.
Результат выполнения программы
Контрольное
задание № 10
Задать два одномерных массива значений, чтобы
величины элементов массивов попадали в заданный интервал на всем диапазоне
(значения выбрать произвольно). Для решения данной задачи применить
подпрограмму типа Procedure.
Т(15), L(8) Определить
среднегеометрическое значение
(-1;3) положительных элементов двух
массивов
Решение
Блок-схема
Массивы Т(15), L(8) формируются с помощью
встроенной функции random.
Для этого используется подпрограмма-процедура fmas.
Для замены
определения среднегеометрического значения положительных элементов в массиве
используется процедура kp
Листинг
программы
Program Zadanie_10;CRT;mm=array
[1..20] of real;
var mg,mk:mm;,n2,k:integer;
s1,s2,x1,x2,p,sg:real;
{Процедура
формирования
массива}fmas(n:integer;
x1:real; x2:real; var b:mm);k:integer;k:=1 to n do[k]:=x1+(x2-x1)*random;k:=1
to n do(b[k]:6:3,' ');
writeln;;
{Процедура подсчета среднегеометрического
значения
положительных элементов }
procedure
kp (b:mm;
n:integer;
var k:integer;
var p:real);
var i,l:integer;:=0; sg:=0;:=1;i:=1
to n dob[i]>0 then:=k+1;:=p*b[i];;;k=0 then p:=0;:=exp(ln(p)*k);;
{};
writeln('Введите
размеры массивов T и L');(n1,n2);('Введите
интервал');
read (x1,x2);('Массив
T');(n1,x1,x2,mg);;('Массив
L');(n2,x1,x2,mk);
writeln;(mg,n1,k,p);
writeln('Массив T:');('среднегеометрическое
значения положительных элементов в массиве ',sg);
writeln;(mk,n2,k,p);
writeln('Массив L:');('среднегеометрическое
значения положительных элементов в массиве ',sg);.
Результаты работы программы
Контрольное
задание № 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 строки с
заголовками ОТСОРТИРОВАННЫЙ МАССИВ А и ОТСОРТИРОВАННЫЙ МАССИВ В. Массивы должны
быть выведены с индексами (индекс изменяется по столбцу)
Решение
Структурная блок-схема
Листинг программы
{ Головная
программа}modul;CRT,
Mod1, Mod2, Mod3, Mod4;,b:
mas;_b,n:integer;;form_a(a);_b(a,b,n_b);;(1,35);;(2,n_b);;_v(1,35);_u(2,n_b);(1,35);;(2,n_b);.Mod1;=
array [1..35] of real;, fb:file of real;:real;form_a(var a:mas);form_b(a:mas;
var b:mas; var n:integer);
{Формирование массива А и запись его в файл М1.txt}
Procedure form_a(var
a:mas);i,k:integer;(fa,'M1.txt');(fa);:=100;i:=1 to 35 do[i]:=-32+(45+32)*random;(fa,a[i]);a[i]<s
then s:=a[i];;
writeln('максимальный
отрицательный элемент масссива А=',s:6:2);
writeln;
close (fa);
end;
{Формирование массива В и запись его в файл М2.txt}
Procedure form_b(a:mas; var b:mas;
var n:integer);,i_f: integer;:real;(fb,'M2.txt');(fb);:=0;i:=1 to 35
doa[i]>s then:=n+1;[n]:=a[i];(fb,b[n]);;;(fb);;.Mod2;Pec1(k_p:integer;
n:integer);
{Процедура печати массивов в 7 столбцов}
{Сортировка
массива по возрастанию}
Procedure Sort_v(k_p:integer;
n:integer);,j:integer;:char;,max:real;:array [1..35] of real;:file of
real;k_p=1 then:='A';(f,'M1.txt');:='B';(f,'M2.txt');;(f);i:=1 to n
do(f,p);[i]:=p;;(f);i:=1 to n-1 doj:=i+1 to n dov[j]<v[i] then:=v[j];
v[j]:=v[i]; v[i]:=max;;(f);i:=1 to n do(f,v[i]);(f);;
{Сортировка
массива по убыванию}
Procedure Sort_u(k_p:integer;
n:integer);,j:integer;:char;,min:real;:array [1..35] of real;:file of
real;k_p=1 then:='A';(f,'M1.txt');:='B';(f,'M2.txt');;(f);i:=1 to n
do(f,p);[i]:=p;;(f);i:=1 to n-1 doj:=i+1 to n dov[j]>v[i] then:=v[j];
v[j]:=v[i]; v[i]:=min;;(f);i:=1 to n do(f,v[i]);(f);;.Mod4;Pec2(k_p:integer;
n:integer);
{
Процедура печати массива в 6 строк}
Procedure Pec2(k_p:integer;
n:integer);i,j,d,k,i1:integer;: file of real;:char;: array [1..35] of
real;:real;k_p=1 then('Отсортированный массив
A');:='A';(f,'M1.txt');
writeln('Отсортированный
массив B');
c:='B';(f,'M2.txt');;j:=1 to 3
do:=j-1; reset(f);i<n do(f,i);(f,p);(c,'[',i+1:2,']=',p:6:2,'
');:=i+6;;;(f);;
end;
end.
Результат
выполнения программы