Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- public class Main1 {
- public static final int TOWER_HEIGHT_MIN = 1;
- public static final int TOWER_HEIGHT_MAX = 1000;
- public static final int TOWER_X_MIN = 1;
- public static final int TOWER_X_MAX = 1000;
- public static void main(String[] args) {
- System.out.println("1. В начале координат (0;0) стоит башня0 высоты h. Задано n башен двумя числами (x;h), где h – высота. Башня всегда выше оси X. Подсчитать количество башен, которые видны с башни0.\n");
- Scanner scanner = new Scanner(System.in);
- int[] towers = new int[TOWER_X_MAX + 1];
- int n;
- boolean isInCorrect;
- n = 0;
- isInCorrect = true;
- while (isInCorrect) {
- System.out.print("Количество башен (число должно быть от " + TOWER_X_MIN + " и до " + TOWER_X_MAX + "): ");
- try {
- n = Integer.parseInt(scanner.nextLine());
- isInCorrect = false;
- if (n < TOWER_X_MIN || n > TOWER_X_MAX) {
- System.out.println("Значение должно находится в границах от " + TOWER_X_MIN + " до " + TOWER_X_MAX + "!");
- isInCorrect = true;
- }
- } catch (NumberFormatException e) {
- System.out.println("Введите число, а не строку или что-то иное!");
- }
- }
- isInCorrect = true;
- while (isInCorrect) {
- System.out.print("Высота башни в (0, 0) (число должно быть от " + TOWER_HEIGHT_MIN + " и до " + TOWER_HEIGHT_MAX + "): ");
- try {
- towers[0] = Integer.parseInt(scanner.nextLine());
- isInCorrect = false;
- if (towers[0] < TOWER_HEIGHT_MIN || towers[0] > TOWER_HEIGHT_MAX) {
- System.out.println("Значение должно находится в границах от " + TOWER_HEIGHT_MIN + " до " + TOWER_HEIGHT_MAX + "!");
- isInCorrect = true;
- }
- } catch (NumberFormatException e) {
- System.out.println("Введите число, а не строку или что-то иное!");
- }
- }
- int i;
- for (i = 0; i < n; i++) {
- isInCorrect = true;
- int curr;
- curr = 0;
- while (isInCorrect) {
- System.out.print("Координата X башни #" + (i + 1) + " (число должно быть от " + TOWER_X_MIN + " и до " + TOWER_X_MAX + "): ");
- try {
- curr = Integer.parseInt(scanner.nextLine());
- isInCorrect = false;
- if (curr < TOWER_HEIGHT_MIN || curr > TOWER_HEIGHT_MAX) {
- System.out.println("Значение должно находится в границах от " + TOWER_X_MIN + " до " + TOWER_X_MAX + "!");
- isInCorrect = true;
- }
- if (!isInCorrect && towers[curr] > 0) {
- System.out.println("Башня уже стоит на этой координате!");
- isInCorrect = true;
- }
- } catch (NumberFormatException e) {
- System.out.println("Введите число, а не строку или что-то иное!");
- }
- }
- isInCorrect = true;
- while (isInCorrect) {
- System.out.print("Высота башни #" + (i + 1) + " (число должно быть от " + TOWER_HEIGHT_MIN + " и до " + TOWER_HEIGHT_MAX + "): ");
- try {
- towers[curr] = Integer.parseInt(scanner.nextLine());
- isInCorrect = false;
- if (towers[curr] < TOWER_HEIGHT_MIN || towers[curr] > TOWER_HEIGHT_MAX) {
- System.out.println("Значение должно находится в границах от " + TOWER_HEIGHT_MIN + " до " + TOWER_HEIGHT_MAX + "!");
- isInCorrect = true;
- }
- } catch (NumberFormatException e) {
- System.out.println("Введите число, а не строку или что-то иное!");
- }
- }
- }
- scanner.close();
- int visibleTowers;
- visibleTowers = 0;
- for (i = 1; i < (TOWER_X_MAX + 1); i++) {
- if (towers[i] > 0)
- visibleTowers += 1;
- if ((towers[i] + 1) > towers[0])
- i = TOWER_X_MAX + 1;
- }
- System.out.println("\nС башни (0, 0) будет видно башен: " + visibleTowers);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment