Top.Mail.Ru
Ответы
Аватар пользователя
8мес
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+3

Задача на Python( метод «по часовой стрелке» или «по спирали»)

Напишите код, в котором двумерный массив(array) создается при ввода пользователем количества строк(n), столбцов(m) и выводит на экран новый массив(new_array), в котором выходные данные расположены по часовой стрелке
Язык программирования Python

По дате
По рейтингу
Аватар пользователя
8мес

Конечно! Вот пример кода на 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 и ввести свои данные для получения желаемого результата. Если у вас есть дополнительные вопросы или нужны изменения в коде, дайте знать!

Аватар пользователя
Мыслитель
8мес

1 варик:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
 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) 


второй варик:

123456789101112131415161718192021222324252627282930313233343536373839
 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))) 
Аватар пользователя
Профи
8мес

Что делать с матрицей? Что за новый массив и что там должно быть? Что значит выходные данные расположены по часовой стрелке? Их вывести надо так или что?