Advertisement
CyberPascal

Untitled

May 1st, 2014
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 5.35 KB | None | 0 0
  1. {***************************************************************************}
  2. { Сибирский Государственный Университет Путей Сообщения (СГУПС)             }
  3. { Кафедра "Информационные технологии транспорта"                            }
  4. {                                                                           }
  5. { Лабораторная работа №8 Вариант 18. Задание 4.                             }
  6. { Тема "Модульное программирование. Процедуры-подпрограммы".                }
  7. {                                                                           }
  8. { Выполнила:                                                                }
  9. { Cтудентк группы МЛ-112, Фомин Александр Сергеевич                         }
  10. { Новосибирск, 2014                                                         }
  11. {***************************************************************************}
  12.  
  13. Program Lab8_18; uses crt;
  14.  
  15. const size_n=10; {Размер массива}
  16.  
  17. type mytype=integer;
  18.      vector=array [1..size_n] of mytype; {Описываем тип для вектора}
  19.  
  20. var a:vector;
  21.     left,right:mytype; {Границы интервала}
  22.  
  23. {----- Генерируем вектор Start -----}
  24. Procedure GenerateVector(var x:vector; n:byte);
  25. var i:byte;
  26. Begin
  27. for i:=1 to n do
  28.     Begin
  29.     X[i]:=Random(51);
  30.     X[i]:=X[i]-25; {-25 <= X[i] <= 25}
  31.     end;
  32. end;
  33. {----- Генерируем вектор End -----}
  34.  
  35. {----- Выводим вектор на экран Start -----}
  36. Procedure OutPutVector(x:vector; name:string; n:byte);
  37. var i:byte;
  38. Begin
  39. Write('--------------------------------------------------------------------------------');
  40. Writeln(' Вектор '+Name+':');
  41. for i:=1 to n do Write(X[i]:5);
  42. Writeln;
  43. end;
  44. {----- Выводим вектор на экран End -----}
  45.  
  46. {----- Поиск номера минимального элемента вектора Start -----}
  47. Function SearchMinimum(x:vector; n:byte):byte;
  48. var i,index:byte;
  49.     min:mytype;
  50. Begin
  51. Min:=X[1]; {Принимаем за минимум}
  52. Index:=1; {Принимаем за минимум}
  53.  
  54. for i:=2 to n do if (X[i] < Min) then
  55.                      Begin
  56.                      Min:=X[i]; {Запоминаем элемент}
  57.                      Index:=i; {Запоминаем индекс}
  58.                      end;
  59. SearchMinimum:=Index; {Присваиваем}
  60. end;
  61. {----- Поиск номера минимального вектора End -----}
  62.  
  63. {----- Сумма элемента вектора по модулю расположенных после первого отрицательного Start -----}
  64. Function SumFirstNegative(x:vector; n:byte):mytype;
  65. var i:byte;
  66.     sum:mytype;
  67. Begin
  68. Sum:=0; {Обнуляем}
  69. i:=1;
  70.  
  71. While ((X[i] >= 0) and (i <= n)) do {Ищем индекс первого отрицательного элемента}
  72.       Begin
  73.       Inc(i);
  74.       end;
  75.  
  76. if (i < n) then for i:=i+1 to n do Sum:=Sum+Abs(X[i]); {Считаем сумму}
  77.  
  78. SumFirstNegative:=Sum; {Присваиваем}
  79. end;
  80. {----- Сумма элемента вектора по модулю расположенных после первого отрицательного End -----}
  81.  
  82. {----- Удаление элементов вектора из интевала [A..B] Start -----}
  83. Procedure DeleteVector(var x:vector; left,right:mytype; n:byte);
  84. var i,j:byte;
  85.     cache:mytype;
  86. Begin
  87. for i:=1 to n do if ((Left <= X[i]) and (X[i] <= Right)) then
  88.                                  Begin
  89.                                  for j:=i to n-1 do
  90.                                      Begin
  91.                                      Cache:=X[j+1]; {Запоминаем}
  92.                                      X[j]:=Cache; {Элементы массива на 1 влево}
  93.                                      end;
  94.                                  X[n]:=0; {Вместо удаленного элемента записываем 0}
  95.                                  Dec(i); {Смещаем проверку элементов во внешнем цикле на 1 влево}
  96.                                  end;
  97. end;
  98. {----- Удаление элементов вектора из интевала [A..B] End -----}
  99.  
  100. Begin clrscr;
  101. Randomize;
  102. GenerateVector(A,Size_N);
  103. OutPutVector(A,#65,Size_N);
  104. Write('--------------------------------------------------------------------------------');
  105. Writeln(' Индекс минимального элемента вектора: ', SearchMinimum(A,Size_N));
  106. Write('--------------------------------------------------------------------------------');
  107. Writeln(' Сумма элементов вектора (по модулю) после первого отрицательного: ', SumFirstNegative(A,Size_N));
  108. Write('--------------------------------------------------------------------------------');
  109. Write(' Введите левую границу интервала:  '); Readln(Left);
  110. Write(' Введите правую границу интервала: '); Readln(Right);
  111. DeleteVector(A,Left,Right,Size_N);
  112. OutPutVector(A,#65,Size_N);
  113. Write('--------------------------------------------------------------------------------');
  114. GotoXY(15,WhereY); Writeln('Для выхода из программы нажмите клавишу "Enter"');
  115. Write('--------------------------------------------------------------------------------');
  116. Readln;
  117. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement