Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Интерфейс программы в режиме выполнения
Результаты работы программы выглядят следующим образом: Задание 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; просмотров: 199. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |