Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {***************************************************************************}
- { Сибирский Государственный Университет Путей Сообщения (СГУПС) }
- { Кафедра "Информационные технологии транспорта" }
- { }
- { Лабораторная работа №8 Вариант 18. Задание 4. }
- { Тема "Модульное программирование. Процедуры-подпрограммы". }
- { }
- { Выполнила: }
- { Cтудентк группы МЛ-112, Фомин Александр Сергеевич }
- { Новосибирск, 2014 }
- {***************************************************************************}
- Program Lab8_18; uses crt;
- const size_n=10; {Размер массива}
- type mytype=integer;
- vector=array [1..size_n] of mytype; {Описываем тип для вектора}
- var a:vector;
- left,right:mytype; {Границы интервала}
- {----- Генерируем вектор Start -----}
- Procedure GenerateVector(var x:vector; n:byte);
- var i:byte;
- Begin
- for i:=1 to n do
- Begin
- X[i]:=Random(51);
- X[i]:=X[i]-25; {-25 <= X[i] <= 25}
- end;
- end;
- {----- Генерируем вектор End -----}
- {----- Выводим вектор на экран Start -----}
- Procedure OutPutVector(x:vector; name:string; n:byte);
- var i:byte;
- Begin
- Write('--------------------------------------------------------------------------------');
- Writeln(' Вектор '+Name+':');
- for i:=1 to n do Write(X[i]:5);
- Writeln;
- end;
- {----- Выводим вектор на экран End -----}
- {----- Поиск номера минимального элемента вектора Start -----}
- Function SearchMinimum(x:vector; n:byte):byte;
- var i,index:byte;
- min:mytype;
- Begin
- Min:=X[1]; {Принимаем за минимум}
- Index:=1; {Принимаем за минимум}
- for i:=2 to n do if (X[i] < Min) then
- Begin
- Min:=X[i]; {Запоминаем элемент}
- Index:=i; {Запоминаем индекс}
- end;
- SearchMinimum:=Index; {Присваиваем}
- end;
- {----- Поиск номера минимального вектора End -----}
- {----- Сумма элемента вектора по модулю расположенных после первого отрицательного Start -----}
- Function SumFirstNegative(x:vector; n:byte):mytype;
- var i:byte;
- sum:mytype;
- Begin
- Sum:=0; {Обнуляем}
- i:=1;
- While ((X[i] >= 0) and (i <= n)) do {Ищем индекс первого отрицательного элемента}
- Begin
- Inc(i);
- end;
- if (i < n) then for i:=i+1 to n do Sum:=Sum+Abs(X[i]); {Считаем сумму}
- SumFirstNegative:=Sum; {Присваиваем}
- end;
- {----- Сумма элемента вектора по модулю расположенных после первого отрицательного End -----}
- {----- Удаление элементов вектора из интевала [A..B] Start -----}
- Procedure DeleteVector(var x:vector; left,right:mytype; n:byte);
- var i,j:byte;
- cache:mytype;
- Begin
- for i:=1 to n do if ((Left <= X[i]) and (X[i] <= Right)) then
- Begin
- for j:=i to n-1 do
- Begin
- Cache:=X[j+1]; {Запоминаем}
- X[j]:=Cache; {Элементы массива на 1 влево}
- end;
- X[n]:=0; {Вместо удаленного элемента записываем 0}
- Dec(i); {Смещаем проверку элементов во внешнем цикле на 1 влево}
- end;
- end;
- {----- Удаление элементов вектора из интевала [A..B] End -----}
- Begin clrscr;
- Randomize;
- GenerateVector(A,Size_N);
- OutPutVector(A,#65,Size_N);
- Write('--------------------------------------------------------------------------------');
- Writeln(' Индекс минимального элемента вектора: ', SearchMinimum(A,Size_N));
- Write('--------------------------------------------------------------------------------');
- Writeln(' Сумма элементов вектора (по модулю) после первого отрицательного: ', SumFirstNegative(A,Size_N));
- Write('--------------------------------------------------------------------------------');
- Write(' Введите левую границу интервала: '); Readln(Left);
- Write(' Введите правую границу интервала: '); Readln(Right);
- DeleteVector(A,Left,Right,Size_N);
- OutPutVector(A,#65,Size_N);
- Write('--------------------------------------------------------------------------------');
- GotoXY(15,WhereY); Writeln('Для выхода из программы нажмите клавишу "Enter"');
- Write('--------------------------------------------------------------------------------');
- Readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement