Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- int main() {
- setlocale(LC_ALL, ".1251");
- int n;
- cout << "Введите количество элементов в массиве: ";
- cin >> n;
- int *mas = new int[n];
- cout << "Введите элементы" << endl;
- for (int i = 0; i < n; ++i)
- do {
- cin >> mas[i];
- }
- while (mas[i] > 10);
- cout << endl;
- /*for (int i = 0; i < n - 1; ++i) {
- for (int j = 0; j < n - i - 1; j++) {
- if (mas[j] > mas[j + 1]) {
- swap (mas[i], mas[j]);
- }
- }
- }*/
- 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
- _asm {
- mov ebx, mas
- mov ecx, n
- cmp ecx, 1
- je one_beg
- xor edi, edi
- ploho :
- add edi, 4
- loop ploho
- mov ecx, n
- beg1 :
- sub edi, 4
- xor eax, eax //обнуление счётчика
- beg2 :
- xor edx, edx
- add edx, [ebx][(4 * ecx)-4]
- //mov bad, ecx //для дальнейшего использования ecx внутри цикла
- cmp edx, 10
- jg skok
- cmp edx, [ebx][edi]
- jne skok
- inc eax
- add[ebx][4 * ecx - 4], 11
- cmp ecx, chet
- jne lul
- sub[ebx][4 * ecx - 4], 11
- lul:
- skok:
- jmp tut //{
- beg12: //perehod (skachok)
- inc ecx
- loop beg1 //}
- tut:
- loop beg2
- add ecx, 2
- xor edx,edx
- add edx,[ebx][edi]
- mov tmp, edx
- cdq
- div ecx
- mov ost, edx
- mov ecx, eax
- mov eax, sum
- cmp ecx, 0
- je gik
- link :
- push[ebx][edi]
- add eax, [ebx][edi]
- mul ten
- inc kol_el_stak
- loop link
- mov sum, eax
- gik :
- mov edx,ost
- cmp edx, 1
- jne pupa
- mov esi,el_mid
- cmp esi,-1
- jne not_palindrom
- mov esi,tmp //добавляем последнее число
- mov el_mid,esi
- pupa :
- mov ecx, chet //количество последних элементов
- dec chet
- loop beg12 //двойной прыжок
- //проверки и формирование самого числа (массива если нужно)
- mov eax, sum
- cdq
- div ten //удаляем последний нуль
- mov edx,el_mid
- cmp edx, -1
- je stac_empty
- mul ten
- add eax, el_mid
- stac_empty:
- mov sum, eax
- mov ecx,kol_el_stak
- dbavka_2d_chast:
- mul ten
- pop esi
- add eax,esi
- loop dbavka_2d_chast
- mov sum,eax
- jmp opa
- one_beg:
- xor eax,eax
- add eax,[ebx][0]
- mov sum,eax
- opa:
- /*mov ecx, n
- itog_mas:
- cdq
- div ten
- mov [ebx][4*ecx-4],edx
- loop itog_mas*/
- }
- cout <<"Один из возможных палиндромов: " <<sum << endl << endl;
- //for (int i = 0; i < n; i++)
- // cout << mas[i];
- cout << endl;
- system("pause");
- return 0;
- _asm {
- not_palindrom:
- }
- cout << "Увы, палиндром составить нельзя." << endl;
- system("pause");
- return -1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement