Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TP_лабы_ЭМ.doc
Скачиваний:
13
Добавлен:
17.11.2018
Размер:
802.3 Кб
Скачать

3.6. Тестовые примеры

Необходимо протестировать программу для различных тестовых примеров (подобрать самостоятельно).

3.7. Интерфейс программы в режиме выполнения

Результаты работы программы выглядят следующим образом:

Задание 4.

1. Постановка задачи

В одномерном массиве, состоящем из n вещественных элементов, вычислить:

1) сумму элементов массива больших –1 и меньших 1;

2) произведение элементов массива, расположенных между максимальным и минимальным элементами;

3) отсортировать массив по возрастанию элементов.

2. Теоретическое введение

Массив – это непрерывная последовательность однотипных данных, обращение к которым внутри массива происходит по индексу. Диапазон изменения индекса массива указывается при его описании, что дает возможность определить размерность массива, т.е. максимально возможное число хранимых в нем данных.

Работе с одномерным массивом, а именно организация последовательного выбора элементов массива по индексу, осуществляется с помощью цикла For, чей целочисленный параметр соответствует индексу массива.

При работе с массивом часто возникают следующие задачи:

  • ввод элементов массива с клавиатуры;

  • вывод массива на экран;

  • поиск по определенному условию элементов в массиве с последующим их суммированием или произведением;

  • упорядочивание элементов массива – сортировка;

  • и др.

Эти задачи удобно организовывать в виде подпрограмм, в которые имя массива передается как параметр:

Procedure Input_Massiv( var A:Massiv; n:Integer);

Procedure Print_Massiv( A:Massiv; n:Integer);

Procedure Sort( var A:Massiv; n:Integer);

...

3. Описание программы

Программа написана на алгоритмическом языке ПАСКАЛЬ и реализована в среде Borland Pascal-7.0 Windows XP/MS DOS, на платформе х86.

3.1. Описание логической структуры программы.

Для решения задачи необходимо:

  • Организовать в виде процедуры Input_Massiv ввод элементов массива с клавиатуры

  • Организовать в виде процедуры Print_Massiv вывод элементов массива на экран

  • Организовать в виде функции Summa сумму элементов массива больших –1 и меньших 1

  • Организовать в виде функции Proizv произведение элементов массива, расположенных между максимальным и минимальным элементами

  • Организовать в виде функции Ind_Max поиск индекса максимального элемента в массиве

  • Организовать в виде функции Ind_Min поиск индекса минимального элемента в массиве

  • Организовать в виде процедуры Sort упорядочивание элементов массива по возрастанию

  • Ввести с клавиатуры значение переменной n , определяющей число элементов массива.

  • Вызвать на выполнение процедуру Input_Massiv

  • Вызвать на выполнение процедуру Print_Massiv

  • Вычислить сумму элементов массива больших –1 и меньших 1 с помощью функции Summa

  • Вызвав функцию Proizv, вычислить произведение элементов массива, расположенных между максимальным и минимальным элементами, которые найти с помощью функций Ind_Max и Ind_Min соответственно.

  • Вызвать на выполнение процедуру Sort.

  • Вызвать на выполнение процедуру Print_Massiv

3.2. Блок-схема программы.

3.3 Описание входных данных

Massiv = array [1..50] of realопределение типа Massiv

n, i – переменная типа Integer;

A – переменная типа Massiv;

3.4. Описание выходных данных

A – переменная типа Massiv;

3.5. Описание программы (листинг)

{ задание 4}

Program ZAD_4;

uses Crt;

type

Massiv = array[1..50] of real;

var

a:Massiv; n:integer;

S,P:real;

procedure Input_Massiv(var a:Massiv; n:integer);

var i:Integer;

begin

for i:=1 to n do

begin

write('A(',i,')='); readln(a[i]);

end;

end;

procedure Print_Massiv(a:Massiv; n:integer);

var i:Integer;

begin

writeln;

for i:=1 to n do

write( a[i]:5:2, ' ' );

end;

function Summa(a:Massiv; n:integer):real;

var i:Integer; s:real;

begin

s:=0;

for i:=1 to n do

if (a[i]>-1)and(a[i]<1) then s:=s+a[i];

Summa:=s;

end;

function Ind_Max(a:Massiv; n:integer):integer;

var i,im:Integer; m:real;

begin

m:=a[1]; im:=1;

for i:=2 to n do

if a[i]>m then begin m:=a[i]; im:=i; end;

Ind_Max:=im;

end;

function Ind_Min(a:Massiv; n:integer):integer;

var i,im:Integer; m:real;

begin

m:=a[1]; im:=1;

for i:=2 to n do

if a[i]<m then begin m:=a[i]; im:=i; end;

Ind_Min:=im;

end;

function Proizv(a:Massiv; n:integer):real;

var i,imin,imax:Integer; p:real;

begin

imin:=Ind_Min(a,n);

imax:=Ind_Max(a,n);

if imin>imax then

begin i:=imin; imin:=imax; imax:=i; end;

p:=1;

for i:=imin+1 to imax-1 do p:=p*a[i];

Proizv:=p;

end;

procedure Sort(var a:Massiv; n:integer );

var i,j:Integer; t:real;

begin

for j:=0 to n-2 do

for i:=2 to n-j do

if a[i-1]>a[i] then

begin t:=a[i-1]; a[i-1]:=a[i]; a[i]:=t; end;

end;

Begin

clrscr;

write('n='); readln(n);

Input_Massiv(A,n);

Print_Massiv(A,n);

{ 1) }

S := Summa(A,n);

Writeln('Summa=',S:5:4);

{ 2) }

P := Proizv(A,n);

Writeln('Proizved=',P:5:4);

{ 3) }

Sort(A,n);

Print_Massiv(A,n);

readln;

End.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]