Лістинг програми Work3. Pas

program Work3;

{$N+,E+}

{ Варіант 60 - елементів масиву типу LONGINT.

Знайти суму перших K від’ємних елементів масиву A.

}

Uses CRT;

Const NN=20; {Максимальна довжина вектора}

inv=' N';

inv=' К';

inv1='Повторіть введення';

inv4='виходить за діапазон [-2147483648..2147483647]!!!!';

inv5=' значення, що вводиться, ';

Type ArrayA=Array [1..NN] of LongInt;

Var k,N:integer;

A:Array;

ch:char;

 

{введення значення N, 1<=N<=NN }

Procedure Input(inv:String; NN:Integer; Var N:integer);

Begin

Repeat

Write('введіть значення'+inv,'=====>');

Readln(N);

Until (N<=NN) and (N>=1);

End;

 

{введення N значень компонентів вектора A[i], -2147483648<=A[i]<= 2147483647 }

Procedure InputVector(N:integer;Var A:arrayA);

Label L;

Var i:integer;

Ra:Real;

s1:String;

Begin

for i:=1 to N do

Begin

L:

Write('введіть значення елемента вектора A[',і,']=====>');

Readln(Ra);

if (Ra>=-2147483648.0)and(Ra<=2147483647.0) then A[i]:=trunc(Ra)

else

Begin

s1:=inv5+inv4;

Writeln(s1);

Writeln(inv1);

goto L;

End

End;

End;

{Висновок значень компонентів вектора A пострічно}

Procedure OutputVector(N:integer; A:arrayA);

Var i:integer;

Begin

Writeln(' -і-і-і- Вихідний вектор -і-і-і-');

for i:=1 to N do

Write(A[i]:11,' ');

Writeln;

End;

 

{Перебування суми перших K від’ємних елементів масиву A довжиною N }

Function Summa(k,N:Integer; A:ArrayA):Extended;

Var i,Kk:integer;

S:Extended;

Begin

Kk:=1; {Лічильник від’ємних елементів масиву}

S:=0;

for i:=1 to N do

if (A[i]<0) and (Kk<=k) then

Begin

S:=S+A[i];

Kk:=Kk+1

End;

Summa:=S

End;

{Головна програма}

Begin

Repeat

ClrScr;

Input(inv,NN,N); {введення конкретної довжини масиву N<=NN }

{введення числа від’ємних елементів масиву K<=N, що треба підрахувати}

Input(invK,N,K);

InputVector(N,A);

OutputVector(N,A);

Writeln('Сума перших K від’ємних елементів масиву A=',

Summa(k,N,A):15:0);

Writeln('Повторити? (y/n)');

ch:=ReadKey;

Until (ch='n') or (ch='N');

End.

Для одержання результату в контрольній роботі №3 (варіант 60) необхідно ввести фактичне значення довжини масиву N (1<=N<=NN), значення числа від’ємних елементів масиву ДО (K<=N), що треба підрахувати, і

 

 

значення елементів вихідного масиву A[i], i=1,...,N (з перевіркою на діапазон LONGINT).

Ім'я програми - WORK3.

· У фігурні дужки включені директиви компілятора (див. Дод. 8) для обробки дійсної суми типу EXTENDED:

¨ $N+ - використовувати числовий співпроцесор (реалізувати операції з крапкою, що плаває, апаратно);

¨ $E+ -включити режим програмної эмуляції співпроцесора.

· У поле опису бібліотек, констант і змінних завдань стандартний модуль CRT, визначені константи: NN, inv, inv, inv1, inv4, inv5.

· Описано власний тип даних Array для опису масиву довжиною NN, елементи якого мають тип LongInt, - Type Array=Array[1..NN] of Longint;

· Описано змінні k, N:Integer і масив A:Array; задана символьна змінна ch.

Далі йдуть описи процедур Input, InputVector, OutputVector, і функції Summa.

· Записано головну програму, що викликає потрібні процедури і функції, відповідно до алгоритму рішення задачі.

Опис процедури Input

¨ У заголовку процедури описані формальні змінні:

вхідні: inv, NN (значення яких передаються з основної програми);

вихідне N (значення визначається в процедурі і передається в основну програму).

¨ У циклі Repeat...Until (N<=NN) and (N>=1) вводиться значення змінної N - Readln(N) з перевіркою (тобто що N повинно бути більше або дорівнює одиниці і менше або дорівнює NN - заданому за умовою завдання значенню розміру масиву). Потім керування передається в основну програму.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: