Ver0n1ka

Лабораторная работа 6 вариант 11 Адаменко Вероника

Dec 8th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. /*Вариант - 11. Адаменко Вероника
  2. Ввести последовательность натуральных чисел{ Aj }j = 1...n(n <= 1000).
  3. Упорядочить последовательность по неубыванию произведения цифр числа,
  4. числа с одинаковыми произведениями цифр дополнительно упорядочить по неубыванию наибольшей цифры числа,
  5. числа с одинаковыми произведениями цифр и одинаковыми наибольшими цифрами дополнительно упорядочить по неубыванию самого числа.*/
  6. #include <iostream>
  7.  
  8. using namespace std;
  9. void swap(int &x, int &y)
  10. {
  11. int buf = x;
  12. x = y;
  13. y = buf;
  14. }
  15. int main()
  16. {
  17. int n, max = INT_MIN, proiz = 1, pr;
  18. int a[1000];
  19. int m[1000];
  20. int p[1000];
  21. cin >> n;
  22. for (int i = 0; i < n; i++)
  23. {
  24. cin >> a[i];
  25. }
  26. for (int i = 0; i < n; i++)
  27. {
  28. int B = a[i];
  29. while (B > 0)
  30. {
  31. pr = B % 10;
  32. if (pr > max)
  33. {
  34. m[i] = pr;
  35. max = pr;
  36. }
  37. proiz *= pr;
  38. B = B / 10;
  39. }
  40. p[i] = proiz;
  41. max = INT_MIN;
  42. proiz = 1;
  43. }
  44. for (int i = 0; i < n - 1; i++)
  45. {
  46. for (int j = i + 1; j < n; j++)
  47. {
  48. if (p[i] > p[j])
  49. {
  50. swap(a[i], a[j]);
  51. swap(p[i], p[j]);
  52. swap(m[i], m[j]);
  53. continue;
  54. }
  55. if (p[i] == p[j])
  56. {
  57. if (m[i] == m[j])
  58. {
  59. if (a[i] > a[j])
  60. {
  61. swap(p[i], p[j]);
  62. swap(a[i], a[j]);
  63. swap(m[i], m[j]);
  64. }
  65. continue;
  66. }
  67. if (m[i] > m[j])
  68. {
  69. swap(p[i], p[j]);
  70. swap(a[i], a[j]);
  71. swap(m[i], m[j]);
  72. }
  73. }
  74. }
  75. }
  76. cout << "Sequence output " << endl;
  77. for (int i = 0; i < n; i++)
  78. cout << a[i] << endl;
  79. }
Add Comment
Please, Sign In to add comment