Домашнее задание для ПО 2.11 по системному программированию от 31.03.21
учебно-методический материал

Склемин Алексей Анатольевич

Выполнить преобразование матрицы, а именно — перестановку строк и столбцов. Для  квадратной матрицы размером n переставляйте столбцы и строки таким образом, чтобы элемент матрицы с наибольшим значением, по модулю, располагался в нижнем правом углу матрицы. Заполнение исходной матрицы организовать с клавиатуры.

Скачать:

ВложениеРазмер
Файл 57.docx16.05 КБ

Предварительный просмотр:

Пятьдесят седьмое задание

Выполнить преобразование матрицы, а именно — перестановку строк и столбцов. Для  квадратной матрицы размером n переставляйте столбцы и строки таким образом, чтобы элемент матрицы с наибольшим значением, по модулю, располагался в нижнем правом углу матрицы. Заполнение исходной матрицы организовать с клавиатуры.


#include

#include

#include

 

int main()

{

 

     int n,i,j, max, rij [100], kolom[100], k=0, q, x=0,y=0, hulp_1=0, hulp_2=0;

     int ** a, f=0, p,o, itteratie=1, d=0;

 

     /*запрос размера матрицы и выделение под нее памяти*/

 

     printf("specify the size of an array: ");

     scanf("%d", &n);

     printf("\n");

     a=calloc(n,sizeof(int));

 

     for (i=0;i

     {

         a[i]=calloc(n,sizeof(int));

 

     }

 

     /*заполнение матрицы случайными числами от 0 до 10 и одновременный вывод ее на экран*/

 

     for (i=0;i

     {

         for (j=0;j

         {a[i][j]=rand()%10;

         printf("%-2d", a[i][j]);}

         printf("\n");

     }

 

     /*отыскание наибольшего элемента матрицы */

 

     max=a[0][0];

 

     for (i=0;i

     {

         for (j=0;j

         {

             if (a[i][j]>max)

             {

                 max=a[i][j];

             }

         }

     }

 

    /*Нахождение позиций наибольшего элемента (когда их несколько и они одинаковы) */

 

     for (i=0;i

     {

         for (j=0;j

         {

             if (a[i][j]==max)

             {

 

                 rij[k]=++i;

                 kolom[k]=++j;

                 ++k;

 

             --i;

             --j;

             }

         }

     }

 

     /*Когда наибольший элемент встречается несколько раз происходит

     отыскание координат того который уже стоит как могно ближе к правому

     нижнему углу, тем самым минимализируется число перестановок столбцов или строк*/

    q=2;

 

    for (i=0;i

    {

 

       if( (rij[i]+kolom[i])>q )

       {

           q=rij[i]+kolom[i];

           x=rij[i];

           y=kolom[i];

 

       }

 

    }

 

    /*перестановка столбцов если это необходимо  */

while(f<=n)

{

 

    for (i=0;i

     {

         for (j=0;j

         {

           if (j==y)

 

           {

               hulp_1=a[i][--j];

               a[i][j]=a[i][++j];

               a[i][j]=hulp_1;

              d=1;

 

           }

 

         }

     }

if (d)

{

     printf ("\nIteration- %d\n", itteratie++);

               for (o=0;o

           {

               for (p=0;p

               {

                   printf("%-2d", a[o][p]);

               }

               printf("\n");

           }

           d=0;

}

 

     ++y;

   ++f;

}

f=0;

 

/*перестановка строк  если это необходимо*/

while(f<=n)

{

 

    for (i=0;i

     {

         for (j=0;j

         {

           if (i==x)

 

           {

               hulp_2=a[--i][j];

               a[i][j]=a[++i][j];

               a[i][j]=hulp_2;

               d=1;

 

           }

 

         }

 

     }

 

     if (d)

{

     printf ("\nIteration- %d\n", itteratie++);

               for (o=0;o

           {

               for (p=0;p

               {

                   printf("%-2d", a[o][p]);

               }

               printf("\n");

           }

           d=0;

}

 

     ++x;

   ++f;

}

 

    return 0;

}


По теме: методические разработки, презентации и конспекты

Домашнее задание для ПО 1.11 по системному программированию от 04.02.20

Шестнадцатеричное представление Представим, что необходимо просмотреть содержимое некотоpых байт в памяти. Требуется oпределить содержимое четырех последовательных байт (двух слов), которые имеют двои...

Домашнее задание для ПО 1.11 по системному программированию от 11.02.20

Сегменты Сегментом называется область, которая начинается на границе параграфа, то есть, по любому адресу, который делится на 16 без остатка. Хотя сегмент может располагаться в любом месте памяти и им...