Advertisement
THOMAS_SHELBY_18

Lab2_4 with error

Oct 24th, 2023
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 3.60 KB | Source Code | 0 0
  1. Program Lab2_4;
  2.  
  3. Uses
  4.     System.SysUtils;
  5.  
  6. Type
  7.     TArray = Array Of Integer;
  8.  
  9. Var
  10.     CountOfPrimeNumbers: Integer;
  11.     ArrA: Array Of Integer;
  12.  
  13. Function ReadNum(Min, Max: Integer): Integer;
  14. Var
  15.     Num: Integer;
  16.     IsCorrect: Boolean;
  17. Begin
  18.     Repeat
  19.         IsCorrect := True;
  20.         Try
  21.             Readln(Num);
  22.         Except
  23.             Write('Некорректный ввод! Введите значение еще раз: ');
  24.             IsCorrect := False;
  25.         End;
  26.         If (IsCorrect) And ((Num < Min) Or (Num > Max)) Then
  27.         Begin
  28.             Write('Недопустимое значение! Введите значение еще раз: ');
  29.             IsCorrect := False;
  30.         End;
  31.     Until (IsCorrect);
  32.     ReadNum := Num;
  33. End;
  34.  
  35. Procedure InputDataFromConsole(Var Arr: Array Of Integer);
  36. Var
  37.     ArrayLength, I, Buf: Integer;
  38. Const
  39.     MIN_ARRAY_LENGTH = 1;
  40.     MAX_ARRAY_LENGTH = 20;
  41.     MIN_VALUE = 1;
  42.     MAX_VALUE = 100;
  43. Begin
  44.     Writeln('Введите количесво элементов массива от ', MIN_ARRAY_LENGTH, ' до ', MAX_ARRAY_LENGTH, ': ');
  45.     ArrayLength := ReadNum(MIN_ARRAY_LENGTH, MAX_ARRAY_LENGTH);
  46.  
  47.     SetLength(Arr, ArrayLength);
  48.  
  49.     Writeln('Введите элементы массива', #10, 'Каждый элемент массива - натуральное число от ',   MIN_VALUE, ' до ', MAX_VALUE);
  50.     For I := 0 To High(Arr) Do
  51.     Begin
  52.         Buf := ReadNum(MIN_VALUE, MAX_VALUE);
  53.         Arr[I] := Buf;
  54.     End;
  55. End;
  56.  
  57. Function InputDataFromFile(): TArray;
  58. Begin
  59.  
  60. End;
  61.  
  62.  
  63. Procedure InputData(Var Arr: Array Of Integer);
  64. Var
  65.     Choice: Integer;
  66. Begin
  67.     Writeln('Выберите вариант ввода:', #10, '1. Ввод из консоли', #10, '2. Ввод из файла', #10, 'Использовать вариант: ');
  68.     Choice := ReadNum(1,2);
  69.  
  70.     If Choice = 1 Then
  71.         InputDataFromConsole(Arr)
  72.     Else
  73.         InputDataFromFile;
  74. End;
  75.  
  76. Procedure OutputDataToConsole(Count: Integer);
  77. Begin
  78.     If Count = 0 Then
  79.         Writeln('Среди элементов массива нет простых чисел')
  80.     Else
  81.         Writeln('Среди элементов массива ', Count, ' простых чисел');
  82. End;
  83.  
  84. Procedure OutputDataToFile(Count: Integer);
  85. Begin
  86.  
  87. End;
  88.  
  89.  
  90. Procedure OutputData(Count: Integer);
  91. Var
  92.     Choice: Integer;
  93. Begin
  94.     Writeln('Выберите вариант ввода:', #10, '1. Ввод из консоли', #10, '2. Ввод из файла', #10, 'Использовать вариант: ');
  95.     Choice := ReadNum(1,2);
  96.  
  97.     If Choice = 1 Then
  98.         OutputDataToConsole(Count)
  99.     Else
  100.         OutputDataToFile(Count);
  101. End;
  102.  
  103. Function CheckNumber(Num: Integer): Boolean;
  104. Var
  105.     I: Integer;
  106.     NumRoot: Real;
  107. Begin
  108.      NumRoot := Sqrt(Num);
  109.     I := 1;
  110.     Repeat
  111.         Inc(I);
  112.     Until ((Num Mod I = 0) Or (I > NumRoot));
  113.  
  114.     CheckNumber := (I > NumRoot);
  115. End;
  116.  
  117. Function GetСountOfPrimeNumbers(Var Arr: Array Of Integer): Integer;
  118. Var
  119.     I, Count: Integer;
  120.     IsPrimeNumber: Boolean;
  121. Begin
  122.     Count := 0;
  123.  
  124.     For I := 0 To High(Arr) Do
  125.     Begin
  126.         IsPrimeNumber := CheckNumber(Arr[I]);
  127.         If IsPrimeNumber Then
  128.             Inc(Count);
  129.     End;
  130.     GetСountOfPrimeNumbers := Count;
  131. End;
  132.  
  133. Begin
  134.     Writeln('Данная программа вычислит количество простых чисел в массиве');
  135.     InputData(ArrA);
  136.     CountOfPrimeNumbers := GetСountOfPrimeNumbers(ArrA);
  137.     OutputData(CountOfPrimeNumbers);
  138. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement