SHARE
TWEET

Untitled

a guest Dec 8th, 2019 90 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*                               Лабораторная работа №6
  2.                         Выполнила Пена Анастасия, группа БПМ 191
  3. */
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6.  
  7. int min,max,m,n;     // объявление глобальных переменных (минимум, максимум, кол-во строк, кол-во столбцов)
  8. int *a;              // объявление указателя на массив в качестве глобальной переменной
  9.  
  10. void createArr() {       // функция создания массива
  11.     printf("Введите через пробел или Enter размер матрицы,\nучитывая, что m>=2 и n<=10 и оба числа целые: ");
  12.     if (scanf("%d",&m)==0 || scanf("%d",&n)==0 || m<2 || n>10) {
  13.         printf("Ошибочный ввод! Закрытие программы. ");
  14.         exit(0);
  15.     }
  16.     a=(int *)malloc(m*n*sizeof(int));        // создание одномерного массива размером m*n
  17.     if (!a) {
  18.         printf("Недостаточно памяти для выполнения задачи. Закрытие программы. ");
  19.         exit(0);
  20.     }
  21. }
  22.  
  23. void getArr() {
  24.     int i=0; int j=0;
  25.     printf("Введите элементы матрицы (заполнение происходит построчно):\n");
  26.     for (i=0;i<m;i++) {
  27.         for (j=0;j<n;j++) {
  28.             printf("a[%d][%d]=",i,j);
  29.             if (scanf("%d",(a + i*n + j))==0) {
  30.                 printf("Ошибочный ввод! Закрытие программы. ");
  31.                 free(a);
  32.                 exit(0);
  33.             }
  34.         }
  35.     }
  36.     min=*(a + 0*n + 0);
  37.     max=*(a + (i-1)*n + (j-1));
  38.     printf("\n\n");
  39.      for (i=0; i<m; i++) {
  40.         printf("\t");
  41.         for (j=0; j<n; j++) {
  42.             printf(" %d ", *(a + i*n + j));
  43.         }
  44.         printf("\n");
  45.     }
  46. }
  47.  
  48. void upD() {
  49.     int i,j; int k=1;
  50.     int s;
  51.     if (n>m) { s=m; }
  52.     else { s=n; }
  53.     for (i=0;i<s;i++) {
  54.         for (j=0;j<n-k;j++) {
  55.             if (*(a + i*n + j)<min) {
  56.                 min=*(a + i*n +j);
  57.             }
  58.         }
  59.         k++;
  60.     }
  61. }
  62.  
  63. void underD() {
  64.     int i,j; int k=n-2;
  65.     for (i=1;i<m;i++) {
  66.         for (j=n-1;j>n-i-1;j--) {
  67.             if (*(a + i*n +j)>max) {
  68.                 max=*(a + i*n + j);
  69.             }
  70.         }
  71.         if (k=0 && m>n) {
  72.             for (j=0;j<n;j++) {
  73.                 if (*(a + i*n + j)>max) {
  74.                     max=*(a + i*n + j);
  75.                 }
  76.             }
  77.         }
  78.         k--;
  79.     }
  80. }
  81.  
  82. void sumM() {
  83.     int sum;
  84.     sum=max+min;
  85.     printf("\nСумма минимального элемента (над побочной диагональю)\nи максимального (под побочной диагональю): %d",sum);
  86.     free(a);
  87. }
  88.  
  89. void main() {
  90.     createArr();
  91.     getArr();
  92.     upD();
  93.     underD();
  94.     sumM();
  95. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top