Программы нахождения массивов
Модуль 1. Сформировать одномерный массив, А (35), значения элементов которого располагаются произвольным образом в диапазоне от -32 до 45. Сформировать из массива, А новый массив В, элементы которого больше, чем значение максимального отрицательного элемента массива А. Записать массивы, А и В в файлы параллельного доступа с именами М1. txt и М2. txt соответственно. Модуль 4. Вывести данные… Читать ещё >
Программы нахождения массивов (реферат, курсовая, диплом, контрольная)
Министерство образования науки, молодежи и спорта Украины ДонГТУ Кафедра ЭК и ИТ Контрольная работа По дисциплине: «Информатика»
Вариант № 82
Выполнил: ст.гр. ЭПП-12−2з Крымцева А.Ю.
Проверил: Хмелев А.Г.
Алчевск, 2012
Контрольное задание № 7
Составить программу для нахождения минимального и максимального элементов массива, а также индексов этих элементов. Ранжировать (упорядочить) одномерный массив по заданному признаку.
(9,56; -4,6; -12,45; 0,45; 98; 233; 5,09; -5,1; 0,004) по убыванию Решение Вначале найдем минимальный и максимальный элементы массива, а затем упорядочим его по убыванию
Блок-схема
Листинг программы
Program zadanie7;
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]
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 Zadanie8;
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 Zadanie9;
Uses CRT;
type
mm = array [1.10, 1.10] of real;
var
l, i, j, n1m, n2m, n1p, n2p: integer;
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;
{Функция подсчета среднего значения j-го столбца}
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 Zadanie10;
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]
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;
reset (f);
d:=0; k:=1;
while not eof (f) do
begin
read (f, p);
write (c,'[', k:2,']=', p:6:2,' ');
d:=d+1;k:=k+1;
if d=5 then
begin
writeln;d:=0;
end;
end;
close (f);
end;
end.
Unit Mod3;
INTERFACE
Procedure Sort_v (k_p:integer; n: integer);
Procedure Sort_u (k_p:integer; n: integer);
IMPLEMENTATION
{Сортировка массива по возрастанию}
Procedure Sort_v (k_p:integer; n: integer);
var
i, j: integer;
c:char;
p, max: real;
v:array [1.35] of real;
f:file of real;
begin
if k_p=1 then
begin
c:='A';
assign (f,'M1.txt');
end
else
begin
c:='B';
assign (f,'M2.txt');
end;
reset (f);
for i:=1 to n do
begin
read (f, p);
v[i]: =p;
end;
close (f);
for i:=1 to n-1 do
for j:=i+1 to n do
if v[j]
begin
max:=v[j]; v[j]: =v[i]; v[i]: =max;
end;
rewrite (f);
for i:=1 to n do
write (f, v[i]);
close (f);
end;
{Сортировка массива по убыванию}
Procedure Sort_u (k_p:integer; n: integer);
var
i, j: integer;
c:char;
p, min: real;
v:array [1.35] of real;
f:file of real;
begin
if k_p=1 then
begin
c:='A';
assign (f,'M1.txt');
end
else
begin
c:='B';
assign (f,'M2.txt');
end;
reset (f);
for i:=1 to n do
begin
read (f, p);
v[i]: =p;
end;
close (f);
for i:=1 to n-1 do
for j:=i+1 to n do
if v[j]>v[i] then
begin
min:=v[j]; v[j]: =v[i]; v[i]: =min;
end;
rewrite (f);
for i:=1 to n do
write (f, v[i]);
close (f);
end;
end.
Unit Mod4;
Interface
Procedure Pec2(k_p:integer; n: integer);
IMPLEMENTATION
{ Процедура печати массива в 6 строк}
Procedure Pec2(k_p:integer; n: integer);
var i, j, d, k, i1:integer;
f: file of real;
c:char;
m: array [1.35] of real;
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;
for j:=1 to 3 do
begin
i:=j-1; reset (f);
while i
begin
seek (f, i);
read (f, p);
write (c,'[', i+1:2,']=', p:6:2,' ');
i:=i+6;
end;
writeln;
close (f);
end;
end;
end.
Результат выполнения программы