![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 16.11.2009
Сообщений: 10
|
![]()
Помогите в решении следующей задачи:
Многочлен степени n задается своими коэффициентами, каждый из которых записан в своем поле структуры «многочлен». Реализуйте процедуру подстановки вместо x значения x-a, где a – произвольное число Программа должна запрашивать коэффициенты с клавиатуры и изменять значения исходных коэффициентов при подстановке. Я реализовал процедуры нахождения факториала и биномиальных коэффициентов, а дальше сложить все вместе при одинаковых степенях не получается ![]() Код HTML:
.model small .386 .stack 100h .data polynomial struc ; Структура "полином" coof1 dw 0 ; коэффициенты coof2 dw 0 coof3 dw 0 coof4 dw 0 coof5 dw 0 coof6 dw 0 coof7 dw 0 coof8 dw 0 coof9 dw 0 coof10 dw 0 polynomial ends coof polynomial <> ; экземпляр структуры .code ; Вычисление факториала n! ; edx = n ; В eax - результат factorial proc push ebx edx ; Сохранить значения регистров cmp edx, 1 ; 0! = 1, 1! = 1 jg @l3 mov eax, 1 jmp @ret2 @l3: mov eax, edx ; eax = n mov ebx, eax ; ebx = n @l4: dec ebx ; ebx = n - 1 mul ebx ; n * (n-1) cmp ebx, 2 ; Сравниваем n - 1 c 2 jg @l4 ; Если n-1 > 2, то продолжаем вычисление @ret2 pop edx ebx ret factorial endp ; Вычисление биномиальных коэффициентов (сочетаний из n по k) ; C = n!/ (k! * (n-k)!) ; edx = n, esi = k ; Результат - в ax combination proc push ebx edx esi ; Сохранить значения регистров call factorial ; eax = n! push eax ; Сохраним eax sub edx, esi ; edx = n-k call factorial ; eax = (n-k)! mov ebx, eax ; ebx = (n-k)! mov edx, esi ; edx = k call factorial ; eax = k! mul ebx ; eax = k! * (n-k)! mov ebx, eax ; ebx = k! * (n-k)! pop eax ; eax = n! xor edx, edx ; обнулим edx для деления div ebx ; eax = n!/ (k! * (n-k)!) = C pop esi edx ebx ret combination endp ; Возведение числа в степень ; Степень n - в dx, число a - в bx power proc push bx cx dx ; Сохранить значения регистров cmp dx, 0 ; Если n = 0 jg @l1 mov ax, 1 ; то a = 1 jmp @ret3 ; выход из процедуры @l1: cmp dx, 1 ; Если n = 1 jg @l2 mov ax, bx ; то a = a jmp @ret @l2: mov ax, bx ; ax = a dec dx ; dx = n - 1 mov cx, dx ; счетчик цикла @l3: mul bx ; ax =a^2 loop @l3 ; ... ax = a^n @ret: pop dx cx bx ret power endp |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Многочлен чебышева | Rыся | Помощь студентам | 2 | 11.01.2010 08:37 |
Многочлен. | Chudo4258 | Помощь студентам | 2 | 10.05.2009 14:02 |
Паскаль. Схема горнора, многочлен. | dido171 | Помощь студентам | 26 | 18.01.2009 23:13 |
Интерполяционный многочлен лагранжа | 3.14oner | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 10.11.2008 17:30 |