


Задача на Python( метод «по часовой стрелке» или «по спирали»)
Напишите код, в котором двумерный массив(array) создается при ввода пользователем количества строк(n), столбцов(m) и выводит на экран новый массив(new_array), в котором выходные данные расположены по часовой стрелке
Язык программирования Python
Конечно! Вот пример кода на Python, который позволяет пользователю ввести размеры двумерного массива и затем заполняет этот массив, а также выводит его элементы по часовой стрелке.
Python
def create_array(n, m):
# Создаем пустой массив
array = []
print("Введите элементы массива:")
for i in range(n):
row = list(map(int, input(f"Строка {i + 1}: ").split()))
array.append(row)
return array
def rotate_array_clockwise(array):
n = len(array)
m = len(array[0]) if n > 0 else 0
new_array = [[0] * n for _ in range(m)] # Создаем новый массив с перевернутыми размерами
for i in range(n):
for j in range(m):
new_array[j][n - 1 - i] = array[i][j] # Перемещаем элементы по часовой стрелке
return new_array
def print_array(array):
for row in array:
print(" ".join(map(str, row)))
def main():
n = int(input("Введите количество строк (n): "))
m = int(input("Введите количество столбцов (m): "))
original_array = create_array(n, m)
print("Исходный массив:")
print_array(original_array)
rotated_array = rotate_array_clockwise(original_array)
print("Массив, расположенный по часовой стрелке:")
print_array(rotated_array)
if __name__ == "__main__":
main()
### Как работает код:
1. Ввод данных: Пользователь вводит количество строк (n) и количество столбцов (m), после чего вводит элементы массива.
2. Создание массива: С помощью функции create_array создается двумерный массив на основе введенных пользователем данных.
3. Поворот по часовой стрелке: Функция rotate_array_clockwise создает новый массив, в который элементы оригинального массива помещаются в соответствии с поворотом на 90 градусов по часовой стрелке.
4. Вывод массива: Функция print_array выводит массив в удобном виде.
### Пример ввода/вывода:
Введите количество строк (n): 2
Введите количество столбцов (m): 3
Введите элементы массива:
Строка 1: 1 2 3
Строка 2: 4 5 6
Исходный массив:
1 2 3
4 5 6
Массив, расположенный по часовой стрелке:
4 1
5 2
6 3
Вы можете запустить этот код в вашей среде Python и ввести свои данные для получения желаемого результата. Если у вас есть дополнительные вопросы или нужны изменения в коде, дайте знать!
1 варик:
def spiral_array(n, m, array):
"""
Создает новый массив, содержащий элементы исходного массива,
расположенные по часовой стрелке.
Args:
n: Количество строк в массиве.
m: Количество столбцов в массиве.
array: Двумерный массив.
Returns:
Новый массив с элементами, расположенными по часовой стрелке.
"""
new_array = []
top, bottom = 0, n - 1
left, right = 0, m - 1
while top <= bottom and left <= right:
# Верхняя строка
for i in range(left, right + 1):
new_array.append(array[top][i])
top += 1
# Правый столбец
for i in range(top, bottom + 1):
new_array.append(array[i][right])
right -= 1
if top <= bottom:
# Нижняя строка
for i in range(right, left - 1, -1):
new_array.append(array[bottom][i])
bottom -= 1
if left <= right:
# Левый столбец
for i in range(bottom, top - 1, -1):
new_array.append(array[i][left])
left += 1
return new_array
# Ввод данных от пользователя
n = int(input("Введите количество строк: "))
m = int(input("Введите количество столбцов: "))
array = []
for _ in range(n):
row = list(map(int, input("Введите строку через пробел: ").split()))
array.append(row)
# Вызов функции и вывод результата
new_array = spiral_array(n, m, array)
print(*new_array)
второй варик:
n = int(input("Введите количество строк n: "))
m = int(input("Введите количество столбцов m: "))
array = []
print("Введите элементы массива:")
for _ in range(n):
row = list(map(int, input().split()))
array.append(row)
new_array = []
top, bottom = 0, n - 1
left, right = 0, m - 1
while top <= bottom and left <= right:
# Слева направо по верхней строке
for i in range(left, right + 1):
new_array.append(array[top][i])
top += 1
# Сверху вниз по правому столбцу
for i in range(top, bottom + 1):
new_array.append(array[i][right])
right -= 1
if top <= bottom:
# Справа налево по нижней строке
for i in range(right, left - 1, -1):
new_array.append(array[bottom][i])
bottom -= 1
if left <= right:
# Снизу вверх по левому столбцу
for i in range(bottom, top - 1, -1):
new_array.append(array[i][left])
left += 1
print("Новый массив:")
print(' '.join(map(str, new_array)))
Что делать с матрицей? Что за новый массив и что там должно быть? Что значит выходные данные расположены по часовой стрелке? Их вывести надо так или что?