Преобразование массива (поворот на 90 градусов) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток. Прошу сердечно указать мне на ошибку, никак не могу сообразить, почему не работает Задание: Целочисленный массив matrixnn повернуть на 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 градусов транспонированную матрицу, а не исходную

Решение задачи: «Преобразование массива (поворот на 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;
}

Объяснение кода листинга программы

  1. Установка локали на русский язык.
  2. Объявление переменных: i, j, n, massiv_min, massiv_max, temp и массивов massiv и massive.
  3. Запрос у пользователя нижней и верхней границы диапазона для массива.
  4. Запрос у пользователя размера матрицы.
  5. Инициализация массива massiv случайными числами в заданном диапазоне.
  6. Транспонирование матрицы методом перебора элементов и обмена их местами.
  7. Вывод транспонированной матрицы.
  8. Переворот матрицы методом перебора элементов и обмена их местами.
  9. Вывод перевернутой матрицы.
  10. Завершение работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы