Поворот массива на 90 градусов по часовой стрелке C - C (СИ)
Формулировка задачи:
Здравствуйте, тут такая проблема, выходит неправильный результат, когда массив (n*n) больше 5 и тд.
Помогите найти ошибку.
#include <stdio.h> #include <stdlib.h> int main(){ int n; scanf("%i", &n); int **a = (int **) malloc(n*sizeof(int *)); for(int i = 0; i<n; i++){ a[i]=(int *) malloc(n*sizeof(int)); } for(int i=0; i<n; i++){ for(int j=0; j<n; j++){ scanf("%i", &a[i][j]); } } int temp; for(int i=0;i<n/2;i++){ for(int j=0;j<n-1-i;j++){ temp = a[i][j]; a[i][j] = a[n-j-1][i]; a[n-j-1][i] = a[n-i-1][n-j-1]; a[n-i-1][n-j-1] = a[j][n-i-1]; a[j][n-i-1]=temp; } } for(int i=0; i<n; i++){ for(int j=0; j<n; j++){ printf("%i ", a[i][j]); } printf("\n"); } return 0; }
Решение задачи: «Поворот массива на 90 градусов по часовой стрелке C»
textual
Листинг программы
#include "stdafx.h" #include <stdio.h> #include <stdlib.h> int main() { int n; scanf("%i", &n); int count = n*n; int *a = (int *)malloc(count * sizeof(int)); for (int i = 0; i<count; i++) { scanf("%i", &a[i]); } int *b = (int *)malloc(count * sizeof(int)); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { b[n*j + n - (i + 1)] = a[j + i*n]; } } for (int i = 0; i<n; i++) { for (int j = 0; j<n; j++) { printf("%i ", b[i*n+j]); } printf("\n"); } free(a); free(b); return 0; }
Объяснение кода листинга программы
В этом коде:
- Объявлены две переменные: n (количество элементов в массиве) и count (общий размер массива).
- Выделена память под массив a с помощью malloc.
- В цикле считываются значения элементов массива a с помощью функции scanf.
- Выделена память под массив b с помощью malloc.
- В цикле производится поворот массива a на 90 градусов по часовой стрелке и сохранение в массиве b с помощью индексов.
- В цикле выводятся значения массива b с помощью функции printf.
- Освобождается память, выделенная под массивы a и b, с помощью функции free.
- Возвращается 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д