Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.85 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <locale.h>
  3. #include <conio.h>
  4. #include <math.h>
  5. #include <windows.h>
  6.  
  7.  
  8. int absolute(int a)
  9. {
  10.     if (a<0) a=a*(-1);
  11.     else a=a;
  12.  
  13.     return a;
  14. }
  15.  
  16.  
  17. int main()
  18. {
  19.   setlocale(LC_ALL, "Russian");
  20.   int i1, j1;               //Переменные, суть которых запомнить позицию удаленного элемента
  21.   int n;                    //Размер матрицы
  22.   int i,j,k,l,g;               //Переменные для циклов
  23.   int *m1, *m2;              // m1 - исходный массив           m2 - преобразованный массив.
  24.   printf("Введите размер квадратной матрицы:");
  25.   if (!scanf("%d",&n))
  26.   {
  27.       return 0;
  28.   }
  29.   if(!(m1=(int*)malloc(n*n*sizeof(int))))
  30.   {
  31.       puts("Нет памяти для заполнения!");
  32.       return 0;
  33.   }
  34.   if(!(m2=(int*)malloc((n-1)*(n-1)*sizeof(int))))
  35.   {
  36.       puts("Нет памяти для заполнения!");
  37.       free(m1);
  38.       return 0;
  39.   }
  40.   for (i=0;i<n;i++)
  41.     for(j=0;j<n;j++)
  42.         do
  43.     {
  44.         system("CLS");
  45.         printf("Введите значение MT[%d][%d]",i,j);
  46.         fflush(stdin);
  47.         k=scanf("%d", (m1+i*n+j));
  48.     }
  49.         while(k==0);
  50.   system("CLS");
  51.     //VsqrMT(n, *m1);
  52.   g=1;                              //переменной передана единица, для того, чтобы сделать цикл рабочим
  53.   for(i=0;i<n;i++)
  54.     for(j=0;j<n;j++)
  55.     {
  56.        if(absolute(*(m1+i*n+j))>absolute(g) || g==1)    //g - элемент сравнения
  57.         {
  58.             g=*(m1+i*n+j);
  59.             i1=i;
  60.             j1=j;
  61.         }
  62.     }
  63.     k=0;
  64.   for (i=0;i<n;i++)
  65.   {                            //k и l переменные для счета внутри m2
  66.     l=0;
  67.     for (j=0; j<n; j++)
  68.     {
  69.         if(i!=i1 && j!=j1)
  70.         {
  71.             *(m2+k*(n-1)+l)=*(m1+i*n+j);
  72.             l++;
  73.         }
  74.         else if ((i==i1 && j==j1) || (i<i1 && j==j1) || (i>i1 && j==j1))       // переменные для второй матрицы в этом случае не поменяются
  75.         {
  76.             k=k; l=l++;
  77.         }
  78.         else if (j=j1)
  79.         {
  80.             k=k; l=l++;
  81.         }
  82.         else if (i==i1) break;
  83.     }
  84.     if(i!=i1)
  85.     k++;
  86.   }
  87.   printf("Исходный массив:\n\n");
  88.   for(i=0;i<n;i++)
  89.   {
  90.     for(j=0; j<n; j++)
  91.         printf("%4d", *(m1+i*n+j));
  92.     printf("\n");
  93.   }
  94.   printf("\n\n");
  95.   printf("Преобразованный массив:\n\n");
  96.   for(i=0;i<(n-1);i++)
  97.   {
  98.     for(j=0; j<(n-1); j++)
  99.         printf("%4d", *(m2+i*(n-1)+j));
  100.     printf("\n");
  101.   }
  102.   printf("\n\n");
  103.   printf("Число-перекресток:\t%d", *(m1+i1*n+j1));
  104.   printf("\n\n");
  105.   system("pause");
  106.   return 0;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement