Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- #include <iostream>
- struct T_List
- {
- int data;
- T_List* next;
- };
- void Make(T_List*& top)
- {
- top = nullptr;
- }
- void Add(T_List*& top, int data)
- {
- T_List* p = new T_List;
- p->data = data;
- p->next = top;
- top = p;
- }
- void Write(T_List*& top)
- {
- T_List* q = top;
- while (q != nullptr)
- {
- printf_s("%d ", q->data);
- q = q->next;
- }
- }
- bool PrimeNumber(int q)
- {
- if (q == 1)
- return false;
- for (int i = 2; i <= sqrt(q); i++)
- {
- if (q % i == 0)
- return false;
- }
- return true;
- }
- bool Prime(T_List*& top)
- {
- T_List* q = top;
- while (q != nullptr)
- {
- if (PrimeNumber(q->data))
- return true;
- q = q->next;
- }
- return false;
- }
- int SumNum(int q)
- {
- int div = q;
- int mod;
- int sum = 0;
- while (div != 0)
- {
- mod = div % 10;
- sum = sum + mod;
- div = div / 10;
- }
- return sum;
- }
- void Order(T_List*& top)
- {
- T_List* q = top;
- while (q->next != nullptr)
- {
- T_List* p = q->next;
- while (p != nullptr)
- {
- if ((SumNum(q->data)) > (SumNum(p->data)))
- std::swap(q->data, p->data);
- p = p->next;
- }
- q = q->next;
- }
- }
- bool CountNumOdd(int q)
- {
- int count = 0;
- int div = q;
- int mod;
- while (div != 0)
- {
- mod = div % 10;
- count += 1;
- div = div / 10;
- }
- if (count % 2 != 0) return true;
- else return false;
- }
- void Delete(T_List*& top)
- {
- while ((CountNumOdd(top->data)) && (top != nullptr))
- {
- T_List* q = top;
- top = top->next;
- delete q;
- }
- if (top == nullptr)
- return;
- T_List* q = top;
- T_List* p = top->next;
- while (p != nullptr)
- {
- if (CountNumOdd(p->data))
- {
- q->next = p->next;
- delete p;
- }
- else
- q = p;
- p = q->next;
- }
- }
- bool FourNum(int q)
- {
- int div = q;
- int count = 0;
- while (div != 0)
- {
- div = div / 10;
- count += 1;
- }
- if (count == 4) return true;
- else return false;
- }
- void Double(T_List*& top)
- {
- T_List* q = top;
- while (q != nullptr)
- {
- if (FourNum(q->data))
- {
- T_List* p = new T_List;
- p->data = q->data;
- p->next = q->next;
- q->next = p;
- q = p->next;
- }
- else
- q = q->next;
- }
- }
- int main()
- {
- T_List* a;
- Make(a);
- int n;
- scanf_s("%d", &n);
- for (int i = 0; i < n; i++)
- {
- int q;
- scanf_s("%d", &q);
- Add(a, q);
- }
- if (Prime(a))
- Order(a);
- else
- {
- Delete(a);
- Double(a);
- }
- Write(a);
- //printf_s("%d", FourNum(1234));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement