Advertisement
Guest User

Untitled

a guest
Oct 2nd, 2021
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.33 KB | None | 0 0
  1. #include <windows.h>
  2. #include <locale.h>
  3. #include <string.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6.  
  7. void MakeMatr(int *arr, int n)
  8. {
  9. int data;
  10. for (int r=0; r<n; r++)
  11. {
  12. for (int c=0; c<n; c++)
  13. {
  14. data= r*10+c;
  15. arr[r*n+c]= data;
  16. //*(arr+c+r*n)= data; // адресация указателем
  17. }
  18. }
  19.  
  20. // По умолчанию 1-й элемент = 0 по условию формирования данных Номер строки*10+номер колонки
  21.  
  22. //Вводим нулевые элементы для задания
  23. //arr[n*n/3]= 0; arr[n*n/8]= 0; arr[n*n/12]= 0;
  24.  
  25. // Без нулей
  26. //arr[0]= n*10+n;
  27. }
  28. void OutMatr(int *arr, int n)
  29. {
  30. for (int r=0; r<n; r++)
  31. {
  32. for (int c=0; c<n; c++)
  33. {
  34. //printf("%d\t", *(arr+c+r*n)); // адресация указателем
  35. printf("%d\t", arr[r*n+c]);
  36. }
  37. printf("\n");
  38. }
  39. }
  40. int ZeroMatr(int *arr, int n)
  41. {
  42. int z= 0;
  43. for (int a=0; a<(n*n); a++) if ( !arr[a] ) z++;
  44. return z;
  45. }
  46. void MaxEl(int *arr, int n, int *ma, int *mz)
  47. {
  48. int na=0;
  49. while (na<n)
  50. {
  51. if ( *ma < arr[na*n+na] ) *ma= arr[na*n+na];
  52. na++;
  53. }
  54.  
  55. na--;
  56. for (int r=0; r<n; r++)
  57. {
  58. if ( *mz < arr[r*n+na] ) *mz= arr[r*n+na];
  59. na--;
  60. }
  61. }
  62.  
  63. int main()
  64. {
  65. system("chcp 1251 > nul");
  66. SetConsoleTitle("ОтветыМейлРу"); // Русские буквы
  67.  
  68. int N; printf("Введите размер матрицы N = "); scanf("%d", &N);
  69.  
  70. int *MatrN= (int *) malloc(N*N*sizeof(int));
  71. if (MatrN==NULL) {printf ("Ошибка выделения памяти\n"); exit(1); }
  72.  
  73. MakeMatr(MatrN, N); OutMatr(MatrN, N);
  74.  
  75. int z= ZeroMatr(MatrN, N); printf ("Количество нулевых элементов= %d\n", z);
  76.  
  77. int MaxA=-1, MaxZ= -1;
  78. MaxEl(MatrN, N, &MaxA, &MaxZ);
  79. printf ("Максимальное значение главной диагонали = %d\n", MaxA);
  80. printf ("Максимальное значение побочной диагонали = %d\n", MaxZ);
  81.  
  82. //system("pause");
  83. free(MatrN);
  84.  
  85. printf("\n"); system("pause");
  86. return 0;
  87. }
  88.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement