Advertisement
Guest User

Untitled

a guest
Jan 25th, 2020
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.38 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <iostream>
  4. struct T_List
  5. {
  6.     int data;
  7.     T_List* next;
  8. };
  9.  
  10. void Make(T_List*& top)
  11. {
  12.     top = nullptr;
  13. }
  14. void Add(T_List*& top, int data)
  15. {
  16.     T_List* p = new T_List;
  17.     p->data = data;
  18.     p->next = top;
  19.     top = p;
  20. }
  21. void Write(T_List*& top)
  22. {
  23.     T_List* q = top;
  24.     while (q != nullptr)
  25.     {
  26.         printf_s("%d ", q->data);
  27.         q = q->next;
  28.     }
  29. }
  30. bool PrimeNumber(int q)
  31. {
  32.     if (q == 1)
  33.         return false;
  34.     for (int i = 2; i <= sqrt(q); i++)
  35.     {
  36.         if (q % i == 0)
  37.             return false;
  38.     }
  39.     return true;
  40. }
  41. bool Prime(T_List*& top)
  42. {
  43.     T_List* q = top;
  44.     while (q != nullptr)
  45.     {
  46.         if (PrimeNumber(q->data))
  47.             return true;
  48.         q = q->next;
  49.     }
  50.     return false;
  51. }
  52. int SumNum(int q)
  53. {
  54.     int div = q;
  55.     int mod;
  56.     int sum = 0;
  57.     while (div != 0)
  58.     {
  59.         mod = div % 10;
  60.         sum = sum + mod;
  61.         div = div / 10;
  62.     }
  63.     return sum;
  64. }
  65. void Order(T_List*& top)
  66. {
  67.     T_List* q = top;
  68.     while (q->next != nullptr)
  69.     {
  70.         T_List* p = q->next;
  71.         while (p != nullptr)
  72.         {
  73.             if ((SumNum(q->data)) > (SumNum(p->data)))
  74.                 std::swap(q->data, p->data);
  75.             p = p->next;
  76.         }
  77.         q = q->next;
  78.     }
  79. }
  80. bool CountNumOdd(int q)
  81. {
  82.     int count = 0;
  83.     int div = q;
  84.     int mod;
  85.     while (div != 0)
  86.     {
  87.         mod = div % 10;
  88.             count += 1;
  89.         div = div / 10;
  90.     }
  91.     if (count % 2 != 0) return true;
  92.     else return false;
  93. }
  94. void Delete(T_List*& top)
  95. {
  96.     while ((CountNumOdd(top->data)) && (top != nullptr))
  97.     {
  98.         T_List* q = top;
  99.         top = top->next;
  100.         delete q;
  101.     }
  102.     if (top == nullptr)
  103.         return;
  104.     T_List* q = top;
  105.     T_List* p = top->next;
  106.     while (p != nullptr)
  107.     {
  108.         if (CountNumOdd(p->data))
  109.         {
  110.             q->next = p->next;
  111.             delete p;
  112.         }
  113.         else
  114.             q = p;
  115.         p = q->next;
  116.     }
  117. }
  118.  
  119. bool FourNum(int q)
  120. {
  121.     int div = q;
  122.     int count = 0;
  123.     while (div != 0)
  124.     {
  125.         div = div / 10;
  126.         count += 1;
  127.     }
  128.     if (count == 4) return true;
  129.     else return false;
  130. }
  131. void Double(T_List*& top)
  132. {
  133.     T_List* q = top;
  134.     while (q != nullptr)
  135.     {
  136.         if (FourNum(q->data))
  137.         {
  138.             T_List* p = new T_List;
  139.             p->data = q->data;
  140.             p->next = q->next;
  141.             q->next = p;
  142.             q = p->next;
  143.         }
  144.         else
  145.             q = q->next;
  146.     }
  147. }
  148. int main()
  149. {
  150.     T_List* a;
  151.     Make(a);
  152.     int n;
  153.     scanf_s("%d", &n);
  154.     for (int i = 0; i < n; i++)
  155.     {
  156.         int q;
  157.         scanf_s("%d", &q);
  158.         Add(a, q);
  159.     }
  160.     if (Prime(a))
  161.         Order(a);
  162.     else
  163.     {
  164.         Delete(a);
  165.         Double(a);
  166.     }
  167.     Write(a);
  168.     //printf_s("%d", FourNum(1234));
  169.     return 0;
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement