Advertisement
deced

Untitled

Sep 5th, 2021
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.18 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6.  
  7. int InputN() {
  8.     int n = -1;
  9.     while ((n < 2) | (n > 15)) {
  10.         printf("Введите размер[2..15] матрицы n*n: ");
  11.         scanf("%d", &n);
  12.         if ((n < 2) || (n > 15)) {
  13.             printf("Ошибка!\n");
  14.         }
  15.     }
  16.     return n;
  17. }
  18.  
  19. int InputElement(int i, int j) {
  20.     int n = -100;
  21.     while ((n < -99) || (n > 99)) {
  22.         printf("[%d][%d] = ", i, j);
  23.         scanf("%d", &n);
  24.     }
  25.     return n;
  26. }
  27.  
  28. int *InputMatrix(int n) {
  29.     int *arr = NULL;
  30.     arr = (int *) malloc(sizeof(int) * n * n);
  31.     for (int i = 0; i < n; i++) {
  32.         printf("\n");
  33.         for (int j = 0; j < n; j++) {
  34.             arr[i * n + j] = InputElement(i, j);
  35.         }
  36.     }
  37.     return arr;
  38. }
  39.  
  40. void PrintMatrix(int *arr, int n) {
  41.     for (int i = 0; i < n; i++) {
  42.         printf("\n");
  43.         for (int j = 0; j < n; j++) {
  44.             printf("%3d", *(arr + i * n + j));
  45.         }
  46.     }
  47. }
  48.  
  49. void PrintZeros(int *arr, int n) {
  50.     printf("\nИдексы нулевых элементов: ");
  51.  
  52.     for (int i = 0; i < n; i++) {
  53.         for (int j = 0; j < n; j++) {
  54.             if (*(arr + i * n + j) == 0) {
  55.                 printf("[%d][%d]  ", i, j);
  56.             }
  57.         }
  58.     }
  59. }
  60.  
  61. void CheckMatrix(int *arr, int n) {
  62.     int count = 0;
  63.     int indexI, indexJ;
  64.  
  65.     for (int i = 0; ((i < n) && (count < 1)); i++) {
  66.         for (int j = 0; ((i < n) && (count < 1)); j++) {
  67.             if (*(arr + i * n + j) != 0) {
  68.                 count++;
  69.                 indexI = i;
  70.                 indexJ = j;
  71.             }
  72.         }
  73.     }
  74.    
  75.     if (count > 0) {
  76.         printf("\nВ матрице есть ненулевые элементы.");
  77.         printf(" Наример: [%d][%d] ", indexI, indexJ);
  78.     } else
  79.         printf("В матрице нет ненулевых элементов.");
  80.  
  81.     PrintZeros(arr, n);
  82. }
  83.  
  84.  
  85. int main() {
  86.     int n;
  87.     int *arr;
  88.     n = InputN();
  89.     arr = InputMatrix(n);
  90.     printf("\nИсходная матрица: ");
  91.     PrintMatrix(arr, n);
  92.     printf("\n");
  93.     CheckMatrix(arr, n);
  94.     return 0;
  95. }
  96.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement