leo99fi

Lab 7 - 2.Замена

Dec 17th, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.61 KB | None | 0 0
  1. /*Замена
  2. Во низа од N природни броеви (N и низата се читаат од СВ) соседните заемно прости броеви (немаат заеднички делители) да си ги заменат позициите. На ист елемент од низата може најмногу еднаш да му се изврши замена. Да се испечати на СИ изменетата низа. Замената да се реализира во посебна функција.
  3.  
  4. Sample input:
  5. 8
  6. 4 8 9 15 7 12 4 7
  7. Sample output:
  8. 4 9 8 7 15 12 7 4
  9. -------------------------------------------------*/
  10. #include <stdio.h>
  11.  
  12. int zaemnoProsti(int a, int b) {
  13.     int temp, i, flag = 0;
  14.     if(b == 0 || a == 0)
  15.         return 0;
  16.  
  17.     if(b > a){
  18.         temp = b;
  19.         b = a;
  20.         a = temp;
  21.     }
  22.  
  23.     for(i = 2; i <= b; i++){
  24.         if(a % i == 0 && b % i == 0){
  25.             flag = 1;
  26.             break;
  27.         }
  28.     }
  29.  
  30.     if(flag)
  31.         return 0;
  32.     else
  33.         return 1;
  34. }
  35.  
  36. void zameni(int* a, int n)
  37. {
  38.     int i;
  39.     for (i = 0; i < n-1; i++)
  40.     {
  41.         if (zaemnoProsti(*(a + i), *(a + i + 1)))
  42.         {
  43.             int temp = *(a + i);
  44.             *(a + i) = *(a + i + 1);
  45.             *(a + i + 1) = temp;
  46.             i++; // Ne vrsi zamena dvapati za ist element;
  47.         }
  48.     }
  49. }
  50.  
  51. int main()
  52. {
  53.     int n, i;
  54.     scanf("%d", &n);
  55.     int niza[n];
  56.     for (i = 0; i < n; i++) scanf("%d", &(*(niza + i)));
  57.     zameni(niza, n);
  58.     for (i = 0; i < n; i++) printf("%d ", *(niza + i));
  59.  
  60.     return 0;
  61. }
Add Comment
Please, Sign In to add comment