Advertisement
J3st3rs_j0k3

pr4_4_egor2

Nov 25th, 2021 (edited)
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.19 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <malloc.h>
  4. #define M 4
  5. #define N 4
  6.  
  7. int main()
  8. {
  9.     int i, j, k, f, Mcount;
  10.     float **A;
  11.     A = malloc(M*sizeof(float*));
  12.     if(A == NULL)
  13.     {
  14.         printf("Ошибка выделения памяти");
  15.         return 100;
  16.     }
  17.    
  18.     for(i = 0; i < M; i++){
  19.         A[i] = (float*)calloc(N, sizeof(float*)); //выделение памяти под строки
  20.         if(A+i == NULL){
  21.             printf("Memory is not allocated"); //проверка того выделилась ли память
  22.             for(j = 0; j < i; j++) free(*(A+j));
  23.             free(A);
  24.             exit(0);
  25.         }
  26.     }
  27.    
  28.     for (i = 0; i < M; i++){ // Ввод элементов массива
  29.         for(j = 0; j < N; j++){
  30.                 printf("A[%d][%d] = ", i, j);
  31.                 if(scanf("%f", *(A + i) + j) != 1){
  32.                     printf("Error, enter digits\n");
  33.                     j--;
  34.                     fflush(stdin);
  35.                 }
  36.         }
  37.     }
  38.    
  39.     // for(i = 1; i < M; i++)
  40.     //     A[i]=A[i-1] + N;
  41.     Mcount = M;
  42.    
  43.     printf("Your matrix:\n");
  44.     for(i = 0; i < M; i++){ //Вывод элементов массива
  45.         for(j = 0; j < N; j++){
  46.             printf("%10.2f ", *(*(A + i) + j));
  47.         }
  48.         printf("\n");
  49.     }
  50.    
  51.     for(i = 0; i < M; i++)
  52.     {
  53.         for(j = 0; j < N; j++)
  54.         {
  55.             if(*(*(A+i)+j) == 1)
  56.             {
  57.                 for (f = i; f < M-1; f++)
  58.                 {
  59.                     for (k = 0; k < N; k++)
  60.                     {
  61.                         *(*(A+f)+k) = *(*(A+(f+1))+k);
  62.                         *(*(A+(f+1))+k) = 0;
  63.                     }
  64.                 }
  65.                 j--;
  66.                 Mcount--;
  67.             }
  68.         }
  69.     }
  70.     if(Mcount == 0)
  71.     {
  72.         printf("Матрица пустая");
  73.         return 0;
  74.     }
  75.     printf("new matrix:\n");
  76.     for(i = 0; i < M - Mcount; i++)
  77.     {
  78.         for(j = 0; j < N; j++)
  79.             printf ("%10.2f", *(*(A+i)+j));
  80.         printf("\n");
  81.  
  82.     }
  83.     for(i = 0; i < M; i++)
  84.         free(*(A+i));
  85.     free(A);
  86.     return 0;
  87. }
  88.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement