redmanexe

Lab2Challenge1Delphi

Oct 18th, 2024
11
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.40 KB | None | 0 0
  1. Uses
  2. System.SysUtils;
  3.  
  4. Const
  5. TOWER_HEIGHT_MIN = 1;
  6. TOWER_HEIGHT_MAX = 1000;
  7. TOWER_X_MIN = 1;
  8. TOWER_X_MAX = 1000;
  9. Var
  10. IsCorrect: Boolean;
  11. N, I: Integer;
  12. Towers: Array[0..TOWER_X_MAX] of Integer;
  13.  
  14. Begin
  15. N := 0;
  16. IsCorrect := False;
  17.  
  18. Repeat
  19. Write('Towers count (value must be from ', TOWER_X_MIN, ' to ', TOWER_X_MAX, '): ');
  20. Try
  21. Readln(N);
  22. IsCorrect := True;
  23. Except
  24. Writeln('Enter number, not string or anything else!');
  25. End;
  26.  
  27. If (IsCorrect And ((N < TOWER_X_MIN) Or (N > TOWER_X_MAX))) Then
  28. Begin
  29. IsCorrect := False;
  30. Writeln('Value must be in range from ', TOWER_X_MIN, ' to ', TOWER_X_MAX, '!');
  31. End;
  32. Until IsCorrect;
  33.  
  34. IsCorrect := False;
  35. Repeat
  36. Write('Tower in (0, 0) height (value must be from ', TOWER_HEIGHT_MIN, ' to ', TOWER_HEIGHT_MAX, '): ');
  37. Try
  38. Readln(Towers[0]);
  39. IsCorrect := True;
  40. Except
  41. Writeln('Enter number, not string or anything else!');
  42. End;
  43.  
  44. If (IsCorrect And ((Towers[0] < TOWER_HEIGHT_MIN) Or (Towers[0] > TOWER_HEIGHT_MAX))) Then
  45. Begin
  46. IsCorrect := False;
  47. Writeln('Value must be in range from ', TOWER_HEIGHT_MIN, ' to ', TOWER_HEIGHT_MAX, '!');
  48. End;
  49. Until IsCorrect;
  50.  
  51. For I := 0 To (N - 1) Do
  52. Begin
  53. IsCorrect := False;
  54. Var Curr := 0;
  55. Repeat
  56. Write('X for tower #', I + 1, ' (value must be from ', TOWER_X_MIN, ' to ', TOWER_X_MAX, '): ');
  57. Try
  58. Readln(Curr);
  59. IsCorrect := True;
  60. Except
  61. Writeln('Enter number, not string or anything else!');
  62. End;
  63.  
  64. If (IsCorrect And ((Curr < TOWER_X_MIN) Or (Curr > TOWER_X_MAX))) Then
  65. Begin
  66. IsCorrect := False;
  67. Writeln('Value must be in range from ', TOWER_X_MIN, ' to ', TOWER_X_MAX, '!');
  68. End;
  69.  
  70. If (IsCorrect And (Towers[Curr] > 0)) Then
  71. Begin
  72. IsCorrect := False;
  73. Writeln('Tower for now placed on this X!');
  74. End;
  75. Until IsCorrect;
  76.  
  77. IsCorrect := False;
  78. Repeat
  79. Write('Height for tower #', I + 1, ' (value must be from ', TOWER_HEIGHT_MIN, ' to ', TOWER_HEIGHT_MAX, '): ');
  80. Try
  81. Readln(Towers[Curr]);
  82. IsCorrect := True;
  83. Except
  84. Writeln('Enter number, not string or anything else!');
  85. End;
  86.  
  87. If (IsCorrect And ((Towers[Curr] < TOWER_HEIGHT_MIN) Or (Towers[Curr] > TOWER_HEIGHT_MAX))) Then
  88. Begin
  89. IsCorrect := False;
  90. Writeln('Value must be in range from ', TOWER_HEIGHT_MIN, ' to ', TOWER_HEIGHT_MAX, '!');
  91. End;
  92. Until IsCorrect;
  93. End;
  94.  
  95. Var VisibleTowers := 0;
  96. Var ShouldCalculate := True;
  97. For I := 1 To TOWER_X_MAX Do
  98. Begin
  99. If ShouldCalculate And (Towers[i] > 0) Then
  100. VisibleTowers := VisibleTowers + 1;
  101.  
  102. If (Towers[i] + 1) > Towers[0] Then
  103. ShouldCalculate := False;
  104. End;
  105.  
  106. WriteLn;
  107. WriteLn('From tower (0, 0) should visible: ', visibleTowers);
  108. Writeln('Press [ENTER] to close program...');
  109. Readln;
  110. End.
  111.  
Advertisement
Add Comment
Please, Sign In to add comment