redmanexe

Lab2Challenge1Java

Oct 18th, 2024
9
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.97 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class Main1 {
  4. public static final int TOWER_HEIGHT_MIN = 1;
  5. public static final int TOWER_HEIGHT_MAX = 1000;
  6. public static final int TOWER_X_MIN = 1;
  7. public static final int TOWER_X_MAX = 1000;
  8.  
  9. public static void main(String[] args) {
  10. System.out.println("1. В начале координат (0;0) стоит башня0 высоты h. Задано n башен двумя числами (x;h), где h – высота. Башня всегда выше оси X. Подсчитать количество башен, которые видны с башни0.\n");
  11.  
  12. Scanner scanner = new Scanner(System.in);
  13. int[] towers = new int[TOWER_X_MAX + 1];
  14. int n;
  15. boolean isInCorrect;
  16.  
  17. n = 0;
  18. isInCorrect = true;
  19. while (isInCorrect) {
  20. System.out.print("Количество башен (число должно быть от " + TOWER_X_MIN + " и до " + TOWER_X_MAX + "): ");
  21. try {
  22. n = Integer.parseInt(scanner.nextLine());
  23. isInCorrect = false;
  24. if (n < TOWER_X_MIN || n > TOWER_X_MAX) {
  25. System.out.println("Значение должно находится в границах от " + TOWER_X_MIN + " до " + TOWER_X_MAX + "!");
  26. isInCorrect = true;
  27. }
  28. } catch (NumberFormatException e) {
  29. System.out.println("Введите число, а не строку или что-то иное!");
  30. }
  31. }
  32.  
  33. isInCorrect = true;
  34. while (isInCorrect) {
  35. System.out.print("Высота башни в (0, 0) (число должно быть от " + TOWER_HEIGHT_MIN + " и до " + TOWER_HEIGHT_MAX + "): ");
  36. try {
  37. towers[0] = Integer.parseInt(scanner.nextLine());
  38. isInCorrect = false;
  39. if (towers[0] < TOWER_HEIGHT_MIN || towers[0] > TOWER_HEIGHT_MAX) {
  40. System.out.println("Значение должно находится в границах от " + TOWER_HEIGHT_MIN + " до " + TOWER_HEIGHT_MAX + "!");
  41. isInCorrect = true;
  42. }
  43. } catch (NumberFormatException e) {
  44. System.out.println("Введите число, а не строку или что-то иное!");
  45. }
  46. }
  47.  
  48. int i;
  49. for (i = 0; i < n; i++) {
  50. isInCorrect = true;
  51. int curr;
  52. curr = 0;
  53. while (isInCorrect) {
  54. System.out.print("Координата X башни #" + (i + 1) + " (число должно быть от " + TOWER_X_MIN + " и до " + TOWER_X_MAX + "): ");
  55. try {
  56. curr = Integer.parseInt(scanner.nextLine());
  57. isInCorrect = false;
  58. if (curr < TOWER_HEIGHT_MIN || curr > TOWER_HEIGHT_MAX) {
  59. System.out.println("Значение должно находится в границах от " + TOWER_X_MIN + " до " + TOWER_X_MAX + "!");
  60. isInCorrect = true;
  61. }
  62.  
  63. if (!isInCorrect && towers[curr] > 0) {
  64. System.out.println("Башня уже стоит на этой координате!");
  65. isInCorrect = true;
  66. }
  67. } catch (NumberFormatException e) {
  68. System.out.println("Введите число, а не строку или что-то иное!");
  69. }
  70. }
  71.  
  72. isInCorrect = true;
  73. while (isInCorrect) {
  74. System.out.print("Высота башни #" + (i + 1) + " (число должно быть от " + TOWER_HEIGHT_MIN + " и до " + TOWER_HEIGHT_MAX + "): ");
  75. try {
  76. towers[curr] = Integer.parseInt(scanner.nextLine());
  77. isInCorrect = false;
  78. if (towers[curr] < TOWER_HEIGHT_MIN || towers[curr] > TOWER_HEIGHT_MAX) {
  79. System.out.println("Значение должно находится в границах от " + TOWER_HEIGHT_MIN + " до " + TOWER_HEIGHT_MAX + "!");
  80. isInCorrect = true;
  81. }
  82. } catch (NumberFormatException e) {
  83. System.out.println("Введите число, а не строку или что-то иное!");
  84. }
  85. }
  86. }
  87. scanner.close();
  88.  
  89. int visibleTowers;
  90. visibleTowers = 0;
  91. for (i = 1; i < (TOWER_X_MAX + 1); i++) {
  92. if (towers[i] > 0)
  93. visibleTowers += 1;
  94.  
  95. if ((towers[i] + 1) > towers[0])
  96. i = TOWER_X_MAX + 1;
  97. }
  98.  
  99. System.out.println("\nС башни (0, 0) будет видно башен: " + visibleTowers);
  100. }
  101. }
  102.  
Advertisement
Add Comment
Please, Sign In to add comment