Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.86 KB | None | 0 0
  1. #include<iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main() {
  6. setlocale(LC_ALL, ".1251");
  7. int n;
  8. cout << "Введите количество элементов в массиве: ";
  9. cin >> n;
  10. int *mas = new int[n];
  11. cout << "Введите элементы" << endl;
  12. for (int i = 0; i < n; ++i)
  13. do {
  14. cin >> mas[i];
  15. }
  16. while (mas[i] > 10);
  17. cout << endl;
  18.  
  19. /*for (int i = 0; i < n - 1; ++i) {
  20. for (int j = 0; j < n - i - 1; j++) {
  21. if (mas[j] > mas[j + 1]) {
  22. swap (mas[i], mas[j]);
  23. }
  24. }
  25. }*/
  26.  
  27.  
  28. int bad(0), tmp, chet(n), sum(0), ten(10), ost,kol_el_stak(0),el_mid(-1);//eax(povt),ecx,edx=while(el),edi=nomer tek el
  29. _asm {
  30. mov ebx, mas
  31. mov ecx, n
  32. cmp ecx, 1
  33. je one_beg
  34. xor edi, edi
  35. ploho :
  36. add edi, 4
  37. loop ploho
  38. mov ecx, n
  39. beg1 :
  40. sub edi, 4
  41. xor eax, eax //обнуление счётчика
  42. beg2 :
  43. xor edx, edx
  44. add edx, [ebx][(4 * ecx)-4]
  45. //mov bad, ecx //для дальнейшего использования ecx внутри цикла
  46. cmp edx, 10
  47. jg skok
  48. cmp edx, [ebx][edi]
  49. jne skok
  50. inc eax
  51. add[ebx][4 * ecx - 4], 11
  52. cmp ecx, chet
  53. jne lul
  54. sub[ebx][4 * ecx - 4], 11
  55. lul:
  56. skok:
  57. jmp tut //{
  58. beg12: //perehod (skachok)
  59. inc ecx
  60. loop beg1 //}
  61. tut:
  62. loop beg2
  63. add ecx, 2
  64. xor edx,edx
  65. add edx,[ebx][edi]
  66. mov tmp, edx
  67. cdq
  68. div ecx
  69. mov ost, edx
  70. mov ecx, eax
  71. mov eax, sum
  72. cmp ecx, 0
  73. je gik
  74. link :
  75. push[ebx][edi]
  76. add eax, [ebx][edi]
  77. mul ten
  78. inc kol_el_stak
  79. loop link
  80. mov sum, eax
  81. gik :
  82. mov edx,ost
  83. cmp edx, 1
  84. jne pupa
  85. mov esi,el_mid
  86. cmp esi,-1
  87. jne not_palindrom
  88. mov esi,tmp //добавляем последнее число
  89. mov el_mid,esi
  90. pupa :
  91. mov ecx, chet //количество последних элементов
  92. dec chet
  93. loop beg12 //двойной прыжок
  94.  
  95. //проверки и формирование самого числа (массива если нужно)
  96. mov eax, sum
  97. cdq
  98. div ten //удаляем последний нуль
  99. mov edx,el_mid
  100. cmp edx, -1
  101. je stac_empty
  102. mul ten
  103. add eax, el_mid
  104. stac_empty:
  105. mov sum, eax
  106. mov ecx,kol_el_stak
  107. dbavka_2d_chast:
  108. mul ten
  109. pop esi
  110. add eax,esi
  111. loop dbavka_2d_chast
  112.  
  113. mov sum,eax
  114. jmp opa
  115. one_beg:
  116. xor eax,eax
  117. add eax,[ebx][0]
  118. mov sum,eax
  119. opa:
  120.  
  121. /*mov ecx, n
  122. itog_mas:
  123. cdq
  124. div ten
  125. mov [ebx][4*ecx-4],edx
  126.  
  127. loop itog_mas*/
  128. }
  129.  
  130. cout <<"Один из возможных палиндромов: " <<sum << endl << endl;
  131.  
  132. //for (int i = 0; i < n; i++)
  133. // cout << mas[i];
  134. cout << endl;
  135. system("pause");
  136. return 0;
  137. _asm {
  138. not_palindrom:
  139. }
  140. cout << "Увы, палиндром составить нельзя." << endl;
  141. system("pause");
  142. return -1;
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement