Advertisement
Guest User

rk

a guest
Nov 25th, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.79 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <math.h>
  3. #include <locale.h>
  4. #include "conio.h"
  5. #include "stdio.h"
  6. #include <cmath>
  7. #include <time.h>
  8. #include <stdlib.h>
  9. #include <malloc.h>
  10.  
  11. void destroy(int **m, int n)
  12. {
  13.     if (!m) return;
  14.     for (int i = 0; i < n; i++)
  15.         free((void*)m[i]);
  16.     free((void*)m);
  17. }
  18. int **caloc(int n)
  19. {
  20.     int **m = NULL, i(0);
  21.     m = (int**)calloc(n, sizeof(int*));
  22.     if (!m) return m;
  23.     for (; i < n; i++)
  24.     {
  25.         m[i] = (int*)calloc(n, sizeof(int));
  26.         if (!m) break;
  27.     }
  28.     if (i < n)
  29.     {
  30.         destroy(m, n);
  31.         m = NULL;
  32.     }
  33.     return m;
  34. }
  35.  
  36. int **create(int n, int r)
  37. {
  38.     int **m = caloc(n);
  39.     if (!m) return m;
  40.     srand((unsigned)time(NULL));
  41.     for (int i = 0; i < n; i++)
  42.         for (int j = 0; j < n; j++)
  43.             m[i][j] = rand() % r;
  44.     return m;
  45. }
  46.  
  47. void print(int **m, int n)
  48. {
  49.     for (int i = 0; i < n; i++)
  50.     {
  51.         printf("\n\t");
  52.         for (int j = 0; j < n; j++)
  53.             printf("%4d", m[i][j]);
  54.     }
  55. }
  56.  
  57. int calc(int **m, int n) {
  58.     int f(0);
  59.     for (int i = 0; i < n; i++)
  60.         for (int j = 0; j < n; j++)
  61.             if (i + j < n - 1)
  62.                 if (m[i][j] % 2 == 0)
  63.                     f++;
  64.  
  65.  
  66.     return f;
  67. }
  68.  
  69. void izm(int **m, int n) {
  70.     int c = calc(m, n);
  71.     if (c == 0) {
  72.         printf("Нет четных элементов выше побочной диагонали");
  73.     }
  74.     else {
  75.         for (int i = 0; i < n; i++)
  76.             for (int j = 0; j < n; j++)
  77.                 if (i == j)
  78.                     m[i][j] = c;
  79.         printf("Количество четных элементов : ");
  80.         printf("%d", c);
  81.         printf("\n");
  82.         print(m, n);
  83.     }
  84. }
  85.  
  86. void main()
  87. {
  88.     setlocale(LC_ALL, "rus");
  89.     int n(0);
  90.     printf("укажите размер матрицы: ");
  91.     scanf_s("%d", &n);
  92.     int **m = create(n, 100);
  93.     if (!m)
  94.     {
  95.         printf("\n\tнет памяти");
  96.         _getch();
  97.     }
  98.  
  99.     print(m, n);
  100.     printf("\n\n");
  101.     izm(m, n);
  102.  
  103.     destroy(m, n);
  104.     _getch();
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement