Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Uses
- System.SysUtils;
- Const
- TOWER_HEIGHT_MIN = 1;
- TOWER_HEIGHT_MAX = 1000;
- TOWER_X_MIN = 1;
- TOWER_X_MAX = 1000;
- Var
- IsCorrect: Boolean;
- N, I: Integer;
- Towers: Array[0..TOWER_X_MAX] of Integer;
- Begin
- N := 0;
- IsCorrect := False;
- Repeat
- Write('Towers count (value must be from ', TOWER_X_MIN, ' to ', TOWER_X_MAX, '): ');
- Try
- Readln(N);
- IsCorrect := True;
- Except
- Writeln('Enter number, not string or anything else!');
- End;
- If (IsCorrect And ((N < TOWER_X_MIN) Or (N > TOWER_X_MAX))) Then
- Begin
- IsCorrect := False;
- Writeln('Value must be in range from ', TOWER_X_MIN, ' to ', TOWER_X_MAX, '!');
- End;
- Until IsCorrect;
- IsCorrect := False;
- Repeat
- Write('Tower in (0, 0) height (value must be from ', TOWER_HEIGHT_MIN, ' to ', TOWER_HEIGHT_MAX, '): ');
- Try
- Readln(Towers[0]);
- IsCorrect := True;
- Except
- Writeln('Enter number, not string or anything else!');
- End;
- If (IsCorrect And ((Towers[0] < TOWER_HEIGHT_MIN) Or (Towers[0] > TOWER_HEIGHT_MAX))) Then
- Begin
- IsCorrect := False;
- Writeln('Value must be in range from ', TOWER_HEIGHT_MIN, ' to ', TOWER_HEIGHT_MAX, '!');
- End;
- Until IsCorrect;
- For I := 0 To (N - 1) Do
- Begin
- IsCorrect := False;
- Var Curr := 0;
- Repeat
- Write('X for tower #', I + 1, ' (value must be from ', TOWER_X_MIN, ' to ', TOWER_X_MAX, '): ');
- Try
- Readln(Curr);
- IsCorrect := True;
- Except
- Writeln('Enter number, not string or anything else!');
- End;
- If (IsCorrect And ((Curr < TOWER_X_MIN) Or (Curr > TOWER_X_MAX))) Then
- Begin
- IsCorrect := False;
- Writeln('Value must be in range from ', TOWER_X_MIN, ' to ', TOWER_X_MAX, '!');
- End;
- If (IsCorrect And (Towers[Curr] > 0)) Then
- Begin
- IsCorrect := False;
- Writeln('Tower for now placed on this X!');
- End;
- Until IsCorrect;
- IsCorrect := False;
- Repeat
- Write('Height for tower #', I + 1, ' (value must be from ', TOWER_HEIGHT_MIN, ' to ', TOWER_HEIGHT_MAX, '): ');
- Try
- Readln(Towers[Curr]);
- IsCorrect := True;
- Except
- Writeln('Enter number, not string or anything else!');
- End;
- If (IsCorrect And ((Towers[Curr] < TOWER_HEIGHT_MIN) Or (Towers[Curr] > TOWER_HEIGHT_MAX))) Then
- Begin
- IsCorrect := False;
- Writeln('Value must be in range from ', TOWER_HEIGHT_MIN, ' to ', TOWER_HEIGHT_MAX, '!');
- End;
- Until IsCorrect;
- End;
- Var VisibleTowers := 0;
- Var ShouldCalculate := True;
- For I := 1 To TOWER_X_MAX Do
- Begin
- If ShouldCalculate And (Towers[i] > 0) Then
- VisibleTowers := VisibleTowers + 1;
- If (Towers[i] + 1) > Towers[0] Then
- ShouldCalculate := False;
- End;
- WriteLn;
- WriteLn('From tower (0, 0) should visible: ', visibleTowers);
- Writeln('Press [ENTER] to close program...');
- Readln;
- End.
Advertisement
Add Comment
Please, Sign In to add comment