Вопрос задан 06.06.2023 в 05:49. Предмет Информатика. Спрашивает Латыпова Алия.

Java, ДАМ 30 БАЛІВ Заполните n мерный квадратный массив числами, которые увеличиваются на 1 по

спирали (число n должно задаваться с клавиатуры). Выведите результат на экран с соблюдением ширины столбцов. Для примера массив 4 на 4 должен выглядеть как указано в примере. Пример: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 Дополнительно (не обязательно): попробуйте решить только одним циклом.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Чернов Никита.

Ответ:

import java.util.Scanner;

public class SpiralMatrix {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.print("Enter n: ");

int n = scanner.nextInt();

int[][] matrix = new int[n][n];

int rowStart = 0;

int rowEnd = n - 1;

int colStart = 0;

int colEnd = n - 1;

int count = 1;

while (rowStart <= rowEnd && colStart <= colEnd) {

for (int i = colStart; i <= colEnd; i++) {

matrix[rowStart][i] = count++;

}

rowStart++;

for (int i = rowStart; i <= rowEnd; i++) {

matrix[i][colEnd] = count++;

}

colEnd--;

if (rowStart <= rowEnd) {

for (int i = colEnd; i >= colStart; i--) {

matrix[rowEnd][i] = count++;

}

rowEnd--;

}

if (colStart <= colEnd) {

for (int i = rowEnd; i >= rowStart; i--) {

matrix[i][colStart] = count++;

}

colStart++;

}

}

for (int[] row : matrix) {

for (int num : row) {

System.out.printf("%2d ", num);

}

System.out.println();

}

}

}

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Конечно! Вот пример решения задачи на Java, где n - размерность квадратного массива, задаваемая с клавиатуры:

java
import java.util.Scanner; public class SpiralArray { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Введите размерность массива: "); int n = scanner.nextInt(); scanner.close(); int[][] array = new int[n][n]; int value = 1; int minRow = 0; int maxRow = n - 1; int minColumn = 0; int maxColumn = n - 1; while (value <= n * n) { // Заполнение верхней строки слева направо for (int i = minColumn; i <= maxColumn; i++) { array[minRow][i] = value++; } minRow++; // Заполнение правого столбца сверху вниз for (int i = minRow; i <= maxRow; i++) { array[i][maxColumn] = value++; } maxColumn--; // Заполнение нижней строки справа налево for (int i = maxColumn; i >= minColumn; i--) { array[maxRow][i] = value++; } maxRow--; // Заполнение левого столбца снизу вверх for (int i = maxRow; i >= minRow; i--) { array[i][minColumn] = value++; } minColumn++; } // Вывод массива с соблюдением ширины столбцов int columnWidth = String.valueOf(n * n).length() + 1; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { System.out.printf("%-" + columnWidth + "d", array[i][j]); } System.out.println(); } } }

После запуска программы она запросит у пользователя размерность массива (n). Затем будет создан двумерный массив размером n на n, и он будет заполнен числами, увеличивающимися на 1 по спирали. Наконец, результат будет выведен на экран с соблюдением ширины столбцов.

Надеюсь, это поможет вам решить задачу!

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос