Advertisement
salron3

Zadacha

Nov 13th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.64 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <conio.h>
  4. #define SIZE 256 //константа с размер 256
  5.  
  6. void Info()
  7. {
  8.     printf("Da se sustavi programa za obrabotka na 2 masiva A[N][N] i B[N][N], \nkadeto dannite sa celi chisla v intervala [-1000;1000].");
  9.     printf("Programata da izvurshi slednite deistviq:\n");
  10.     printf("a) Da se obrazuva ednomeren masiv C[N], elementite na koito da se \nobrazuvat kato suma po suotvetnite glavni diagonali na A i B\n");
  11.     printf("b) Polucheniqt masiv da se sortira po golemina.\n");
  12.     printf("Author : Ivan Ivanov\n");
  13.     printf("Fakulteten nomer: 081 217 018,  MTF, DIT, grupa 17\n\n");
  14. }
  15.  
  16. void BubbleSort(int *arr, size_t size)
  17. {
  18.     if (!arr || size == 0) //ако масиват е празен се връщаме в main()
  19.         return;
  20.  
  21.     int swap = 1;
  22.     while (swap)//докато има елементи за размяна
  23.     {
  24.         swap = 0;
  25.         for (size_t i = 0; i < size - 1; i++)
  26.         {
  27.             if (arr[i] > arr[i + 1]) //ако следващият елемент е по-малък от текущия, разменя местата им
  28.             {
  29.                 int temp = arr[i];
  30.                 arr[i] = arr[i + 1];
  31.                 arr[i + 1] = temp;
  32.                 swap = 1;
  33.             }
  34.         }
  35.     }
  36.     printf("The sorting is succesful.\n");
  37. }
  38.  
  39. void EnterElementsInMatrix(int arr[SIZE][SIZE], size_t n) //Подаваме матрицата в която ще записваме елементи
  40. {
  41.     int num = 0;
  42.     for (size_t i = 0; i < n; i++)
  43.     {
  44.         for (size_t j = 0; j < n; j++)
  45.         {
  46.             printf("arr[%d][%d] = ", i, j);
  47.             scanf("%d", &num);
  48.  
  49.             while (num < -1000 || num > 1000) //докато числото не е в дадения интервал ни кара да го въвеждаме наново
  50.             {
  51.                 printf("Enter new number [-1000;1000] !!!\n");
  52.                 printf("arr[%d][%d] = ", i, j);
  53.                 scanf("%d", &num);
  54.             }
  55.             arr[i][j] = num; //записваме числото на дадената позиция
  56.         }
  57.     }
  58. }
  59.  
  60. void PrintMatrix(int matrix[SIZE][SIZE], size_t n) //Принтира матрицата на конзолата
  61. {
  62.     printf("\n");
  63.     for (size_t i = 0; i < n; i++)
  64.     {
  65.         for (size_t j = 0; j < n; j++)
  66.         {
  67.             printf("%d ", matrix[i][j]);
  68.         }
  69.         printf("\n");
  70.     }
  71.     printf("\n");
  72. }
  73.  
  74. int main()
  75. {
  76.     Info(); //принтираме условието на екрана
  77.  
  78.     int n;
  79.     printf("Enter n: ");
  80.     scanf("%d", &n);
  81.  
  82.     while (n < 0 || n > SIZE)
  83.     {
  84.         printf("Enter n in between 1 and 256: ");
  85.         scanf("%d", &n);
  86.     }
  87.  
  88.     int a[SIZE][SIZE]; //създаваме матрица А с размер SIZE*SIZE (256 на 256)
  89.     int b[SIZE][SIZE];
  90.     int result[SIZE]; //създаваме резултатния масив
  91.  
  92.     printf("Enter the elements for array A:\n");
  93.     EnterElementsInMatrix(a, n);
  94.     PrintMatrix(a, n); //извикваме функцията и тя принтира матрица А на конзолата
  95.  
  96.     printf("Enter the elements for array B:\n");
  97.     EnterElementsInMatrix(b, n);
  98.     PrintMatrix(b, n); //принтира матрица B на конзолата
  99.  
  100.     for (size_t i = 0; i < n; i++)
  101.     {
  102.         result[i] = a[i][i] + b[i][i];//събираме елементите от главните диагонали и ги записваме резултантният масив
  103.     }
  104.  
  105.     printf("Before sorting:\n");
  106.     for (size_t i = 0; i < n; i++) //притира масива на конзолата преди сортиране
  107.     {
  108.         printf("%d ", result[i]);
  109.     }
  110.  
  111.     BubbleSort(result, n); // сортираме масива в нарастващ ред
  112.  
  113.     for (size_t i = 0; i < n; i++) //притира масива на конзолата
  114.     {
  115.         printf("%d ", result[i]);
  116.     }
  117.  
  118.     _getch();
  119.     return 0;
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement