Преобразование массива (поворот на 90 градусов) - C (СИ)
Формулировка задачи:
Всем доброго времени суток. Прошу сердечно указать мне на ошибку, никак не могу сообразить, почему не работает
Задание: Целочисленный массив matrixnn повернуть на 90 градусов по часовой стрелке.
при компиляции и запуске выдает перевернутую на 90 градусов транспонированную матрицу, а не исходную
#include <stdio.h> #include <conio.h> #include <math.h> #include <time.h> int main() { int i, j, n, m, massiv_min, massiv_max, temp; time_t t; // текущее время для инициализации // генератора случайных чисел srand((unsigned) time(&t)); // инициализация генератора // случайных чисел printf("\nVvedite nizhnyuyu granicu diapazona:"); scanf("%d", &massiv_min); printf("\nVvedite verhnyuyu granicu diapazona:"); scanf("%d", &massiv_max); printf("\nVvedite razmer matricy:"); scanf("%d", &n); int massiv[n][n]; int massive[n][n]; printf("\nIshodny massiv:\n"); m = massiv_max-massiv_min + 1; for (i=0; i<n; i++) // получение случайного числа в диапазоне от vector_min до vector_max { for (j=0; j<n; j++) { massiv[i][j]=rand()% m + massiv_min; printf("%5d", massiv[i][j]); } printf("\n"); } //транспонируем матрицу for(i=0;i<n;i++) for(j=0;j<n;j++) { temp=massiv[i][j]; massiv[i][j]=massiv[j][i]; massiv[j][i]=temp; } printf("\nTransponirovannaya matrica\n"); for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("%5d", massiv[j][i]); printf("\n"); } printf("\nPerevernutaya matrica\n"); for(j=0;j<n;j++) for(i=0;i<n/2;i++) { temp=massiv[j][i]; massiv[j][i]=massiv[j][n-1-i]; massiv[j][n-1-i]=temp; } printf("\n"); for(j=0;j<n;j++) { for(i=0;i<n;i++) printf("%5d", massiv[j][i]); printf("\n"); } printf("\n"); getch(); return 0; }
Решение задачи: «Преобразование массива (поворот на 90 градусов)»
textual
Листинг программы
int main(int argc, char *argv[]) { setlocale(LC_ALL, "RU"); int i, j, n, massiv_min, massiv_max, temp; srand(time(NULL)); // инициализация генератора // случайных чисел printf("Введите нижнюю границу диапазона: "); scanf("%d", &massiv_min); printf("Введите верхнюю границу диапазона: "); scanf("%d", &massiv_max); printf("Введите размер матрицы: "); scanf("%d", &n); int massiv[n][n]; int massive[n][n]; printf("Исходный массив:\n"); for (i = 0; i < n; i++) // получение случайного числа в диапазоне от vector_min до vector_max { for (j = 0; j < n; j++) { massiv[i][j] = massiv_min + rand()%massiv_max; printf("%5d", massiv[i][j]); } printf("\n"); } //транспонируем матрицу for (i = 0; i < n; i++) for (j = i; j < n; j++) { temp = massiv[i][j]; massiv[i][j] = massiv[j][i]; massiv[j][i] = temp; } printf("Транспонированная матрица\n"); for (i = 0; i < n; i++) { for (j = 0; j < n; j++) printf("%5d", massiv[i][j]); printf("\n"); } printf("Перевёрнутая матрица\n"); for (j = 0; j < n; j++) for (i = 0; i < n / 2; i++) { temp = massiv[j][i]; massiv[j][i] = massiv[j][n - 1 - i]; massiv[j][n - 1 - i] = temp; } printf("\n"); for (j = 0; j < n; j++) { for (i = 0; i < n; i++) printf("%5d", massiv[j][i]); printf("\n"); } printf("\n"); getch(); return 0; }
Объяснение кода листинга программы
- Установка локали на русский язык.
- Объявление переменных: i, j, n, massiv_min, massiv_max, temp и массивов massiv и massive.
- Запрос у пользователя нижней и верхней границы диапазона для массива.
- Запрос у пользователя размера матрицы.
- Инициализация массива massiv случайными числами в заданном диапазоне.
- Транспонирование матрицы методом перебора элементов и обмена их местами.
- Вывод транспонированной матрицы.
- Переворот матрицы методом перебора элементов и обмена их местами.
- Вывод перевернутой матрицы.
- Завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д