Получить транспонированную матрицу - C (СИ)

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

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

Дана квадратная матрица размера nxn. Получить транспонированную матрицу. Почему компилятор пишет ошибку:Run-Time Check Failure #2 - Stack around the variable 'arr' was corrupted. Каким еще способом можно траспорнировать мтарицу, не используя данный способ?
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#define F 3
 
int main() 
{
    int arr[F][F],i,j;
    srand(time(NULL));
    printf("Array: \n");
    for(i=0;i<F;i++);
    {
        printf("\n");
        for(j=0;j<F;j++)
        {
            arr[i][j]=rand()%100/10.0;
            printf("%3d ",arr[i][j]);
        }
    }
    printf("\n \n");
    for(i=0;i<F;i++);
    {
        printf("\n");
        for(j=0;j<F;j++)
        {
            arr[i][j]=rand()%100/10.0;
            printf("%3d ",arr[j][i]);
        }
    }
return 0;
}

Решение задачи: «Получить транспонированную матрицу»

textual
Листинг программы
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#define F 3
 
int main() 
{
    int arr[F][F],i,j;
    srand(time(NULL));
    printf("Array: \n");
    for(i=0;i<F;i++)
    {
        printf("\n");
        for(j=0;j<F;j++)
        {
            arr[i][j]=rand()%100/10.0;
            printf("%3d ",arr[i][j]);
        }
    }
    int temp, a, b;
    for (i=0;i<3;i++)
        for (j=0;j<3;j++)
            for (a=0;a<3;a++)
                for (b=0;b<3;b++)
                    if (arr[a][b]<arr[i][j])
                    {
                        temp=arr[a][b];
                        arr[a][b]=arr[i][j];
                        arr[i][j]=temp;
                    }
                    printf("\n \n");
                    for(i=0;i<F;i++)
                    {
                        printf("\n");
                        for(j=0;j<F;j++)
                        {
                            printf("%3d ",arr[i][j]);
                        }
                    }
                    return 0;
}

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

В данном коде реализована функция для получения транспонированной матрицы.

  1. Создается матрица arr[F][F] и инициализируется случайными числами с помощью функции rand()%100/10.0.
  2. Выводится на экран исходная матрица arr[F][F].
  3. Создаются временные переменные temp, a, b для проведения операций сравнения и обмена элементов матрицы.
  4. Происходит двойная переборка элементов матрицы с целью сравнения и обмена элементов в соответствии с формулой: если arr[a][b]<arr[i][j], то производится обмен элементов arr[a][b] и arr[i][j].
  5. Выводится на экран полученная транспонированная матрица arr[F][F].
  6. Возвращается 0, что означает успешное завершение работы программы.

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


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

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

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