Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

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




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

Задание 4.

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

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

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

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

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

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

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

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

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

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

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

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

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

· и др.

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

 

Procedure Input_Massiv( varA:Massiv;n:Integer);

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

Procedure Sort( varA:Massiv; n:Integer);

...

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

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

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

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

- Организовать в виде процедуры 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

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

 

 

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

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

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

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

 

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

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

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

{ задание 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.

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

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










Последнее изменение этой страницы: 2018-05-30; просмотров: 166.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...