Advertisement
Tiranka1861

Переполнение не работает(

Oct 25th, 2023
1,076
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 3.16 KB | None | 0 0
  1. Program Lab2_1;
  2.  
  3. Uses
  4.     System.SysUtils;
  5.  
  6. Var
  7.     Arr: Array Of Real;
  8.     I, K, LengthArr, J: Integer;
  9.     NearestNum, SetValue, Buffer: Real;
  10.     IsCorrect: Boolean;
  11.  
  12. Begin
  13.     Writeln('The program finds the number of the nearest member of the sequence to a given number.');
  14.     Write('Enter length of subsequence: ');
  15.     Repeat
  16.         IsCorrect := True;
  17.         Try
  18.             Read(LengthArr);
  19.         Except
  20.             Write('Symbols have been entered or exceeding permissible limits. Enter a valid value: ');
  21.             IsCorrect := False;
  22.         End;
  23.         If (IsCorrect) And (LengthArr < 2) Then
  24.         Begin
  25.             IsCorrect := False;
  26.             Write('A number less than two was entered. Enter a valid value: ');
  27.         End;
  28.     Until IsCorrect;
  29.     SetLength(Arr, LengthArr);
  30.  
  31.     Write('Enter elements of subsequence: ');
  32.     For I := Low(Arr) To High(Arr) Do
  33.     Begin
  34.         Repeat
  35.             IsCorrect := True;
  36.             Try
  37.                 Read(Arr[I]);
  38.             Except
  39.                 Write('Symbols have been entered. Enter the number: ');
  40.                 IsCorrect := False;
  41.             End;
  42.             If (IsCorrect) And ((Arr[I] > 2000000) Or (Arr[I] < -2000000)) Then
  43.             Begin
  44.                 IsCorrect := False;
  45.                 Write('Exceeding permissible limits. Enter a valid value: ');
  46.             End;
  47.         Until IsCorrect;
  48.     End;
  49.  
  50.     For I := 0 To LengthArr - 2 Do
  51.         For J := I + 1 To LengthArr - 1 Do
  52.             If Arr[I] > Arr[J] Then
  53.             Begin
  54.                 Buffer := Arr[I];
  55.                 Arr[I] := Arr[J];
  56.                 Arr[J] := Buffer;
  57.             End;
  58.  
  59.     For I := Low(Arr) To High(Arr) Do
  60.         Write(Arr[I], ' ');
  61.  
  62.     Write(#13, 'Enter real value: ');
  63.     Repeat
  64.         IsCorrect := True;
  65.         Try
  66.             Read(SetValue);
  67.         Except
  68.             Write('Symbols have been entered. Enter the number: ');
  69.             IsCorrect := False;
  70.         End;
  71.         If (IsCorrect) And ((SetValue < -2000000000) Or (SetValue > 2000000000)) Then
  72.         Begin
  73.             IsCorrect := False;
  74.             Write('Exceeding permissible limits. Enter a valid value: ');
  75.         End;
  76.     Until IsCorrect;
  77.  
  78.     If SetValue < Arr[Low(Arr)] Then
  79.         Write('The entered value is less than the smallest term of the sequence.')
  80.     Else
  81.     Begin
  82.         If SetValue > Arr[High(Arr)] Then
  83.             Write('The entered value is greater than the last term, so the conditions of the task cannot be complied with.')
  84.         Else
  85.         Begin
  86.             NearestNum := Arr[Low(Arr)];
  87.             I := Low(Arr);
  88.             While SetValue > Arr[I] do
  89.             Begin
  90.                 K := I;
  91.                 Inc(I);
  92.             End;
  93.             NearestNum := Arr[K];
  94.  
  95.             Repeat
  96.                 IsCorrect := True;
  97.                 If NearestNum < Arr[K + 1] Then
  98.                     Write('The nearest element of the sequence numbered ', k + 1)
  99.                 Else
  100.                 Begin
  101.                     IsCorrect := False;
  102.                     Inc(K);
  103.                 End;
  104.             Until IsCorrect;
  105.         End;
  106.     End;
  107. End.
  108.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement