Программы нахождения массивов

Тип работы:
Контрольная
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Министерство образования науки, молодежи и спорта Украины

ДонГТУ

Кафедра ЭК и ИТ

Контрольная работа

По дисциплине: «Информатика»

Вариант № 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]< 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 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]<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;

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]< v[i] then

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<n do

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.

Результат выполнения программы

ПоказатьСвернуть
Заполнить форму текущей работой