Как поменять местами вычитаемое и уменьшаемое
Сообщений: 27
Assembler — поменять местами уменьшаемое и вычитаемое в готовой программе-калькулятор
доброго времени суток)
есть готовая программа — калькулятор.
сложение и умножение работают чудесно (потому что без разницы что на что умножать или складывать).
а вот с вычитанием и делением поплыл.
сначала, почему-то, вводится вычитаемое, а лишь затем уменьшаемое и результат выходит обратный.
будьте добры, подскажите, пожалуйста, как поменять их местами?
знаю, что нужно покопаться в процедурах input и output, но замена местами bx ax — ничего не дала
model tiny STACK 256 DATASEG mes1 db '1. summa',0dh,0ah,'$' mes2 db '2. Raznnost',0dh,0ah,'$' mes3 db '3. umnozhenie',0dh,0ah,'$' mes4 db '4. delenie',0dh,0ah,'$' info db 'Vyberite variant',0dh,0ah,'$' lol db 'Input Error!',0dh,0ah,'$' info2 db 'Vvedite pervoe chuslo',0dh,0ah,'$' info3 db 'Vvedit drugoe chuslo',0dh,0ah,'$' errormes db 'incorrect number',0dh,0ah,'$' buff db 6,7 Dup(?) CODESEG start: mov ax,@data mov ds,ax mov dx,offset mes1 mov ah,09h int 21h mov dx,offset mes2 mov ah,09h int 21h mov dx,offset mes3 mov ah,09h int 21h mov dx,offset mes4 mov ah,09h int 21h mov dx,offset info mov ah,09h int 21h CALL InputInt cmp ax,1 je summa cmp ax,2 je razn cmp ax,3 je umnozhenie cmp ax,4 je delenie jmp error summa: lea dx,info2 mov ah,09h int 21h CALL InputInt mov bx,ax mov dx,offset info3 mov ah,09h int 21h CALL InputInt add ax,bx jmp kinez razn: mov dx,offset info2 mov ah,09h int 21h CALL InputInt mov bx,ax mov dx,offset info3 mov ah,09h int 21h CALL InputInt sub ax,bx jmp kinez umnozhenie: mov dx,offset info2 mov ah,09h int 21h CALL InputInt mov bx,ax mov dx,offset info3 mov ah,09h int 21h CALL InputInt mul bx jmp kinez delenie: mov dx,offset info2 mov ah,09h int 21h CALL InputInt mov bx,ax mov dx,offset info3 mov ah,09h int 21h CALL InputInt xor dx,dx div bx jmp kinez error: mov dx,offset lol mov ah,09h int 21h CALL InputInt xor ah,ah int 16h kinez: CALL OutputInt xor ah,ah int 16h mov ah,04Ch mov al,1h int 21h InputInt proc push bx mov ah,0ah xor di,di mov dx,offset buff int 21h mov ah,02h int 21h mov si,offset buff+2 cmp byte ptr [si],"-" jnz ii1 mov di,1 inc si ii1: xor ax,ax mov bx,10 ii2: mov cl,[si] cmp cl,0dh jz endin cmp cl,'0' jl er cmp cl,'9' ja er sub cl,'0' mul bx add ax,cx inc si jmp ii2 er: mov dx,offset errormes mov ah,09h int 21h int 20h endin: cmp di,1 jnz ii3 neg ax ii3: pop bx ret InputInt endp OutputInt proc test ax,ax jns oi1 mov cx,ax mov ah,02h mov dl,'-' int 21h mov ax,cx neg ax oi1: xor cx,cx mov bx,10 oi2: xor dx,dx div bx push dx inc cx test ax,ax jnz oi2 mov ah,02h oi3: pop dx cmp dl,9 jbe oi4 add dl,7 oi4: add dl,'0' int 21h loop oi3 ret OutputInt endp END start
________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!
Последний раз редактировалось Serge_Bliznykov; 29.03.2015 в 22:46 .
2. Перемена знаков в числителе и знаменателе дроби
Если дано какое-либо рациональное выражение \(A\), то, умножив его на \(-1\), получаем ( − 1 ) ⋅ A = − A .
Два рациональных выражения \(A\) и \(-A\) называются взаимно противоположными рациональными выражениями, если их сумма равна \(0\), то есть \(A+(-A)=0\) .
Так же как и противоположные числа, противоположные выражения друг от друга отличаются только знаком.
Выражения \(5\) и \(-5\); \(a+b\) и \(-a-b\); x y и − x y ; m 2 − m + 3 и − m 2 + m − 3 , это взаимно противоположные выражения, так как:
Разложение многочленов на множители


В предыдущем уроке мы познакомились с понятием многочлена, а также научились складывать, вычитать и умножать их. Теперь пришло время изучить и разложение многочленов на множители, а также рассмотреть использование этого приема при решении некоторых математических задач.

План урока:
Вынесение общего множителя за скобки
В предыдущем уроке мы изучили умножение многочлена на одночлен. Например, произведение монома a и полинома b + c находится так:
Однако в ряде случае удобнее выполнить обратную операцию, которую можно назвать вынесением общего множителя за скобки:
Например, пусть нам надо вычислить значение полинома ab + bc при значениях переменных a = 15,6, b = 7,2, c = 2,8. Если подставить их напрямую в выражение, то получим
ab + bc = 15.6 * 7.2 + 15.6 * 2.8
что, скорее всего, не получится посчитать в уме. Если же вынести a за скобки, то получим иную запись:
ab + bc = a(b + c) = 15.6 * (7.2 + 2.8) = 15.6 * 10 = 156
В данном случае мы представили полином ab + bc как произведение двух множителей: a и b + с. Данное действие называют разложением многочлена на множители.

При этом каждый из множителей, на которые разложили многочлен, в свою очередь может быть многочленом или одночленом.
Рассмотрим полином 14ab – 63b 2 . Каждый из входящих в него одночленов можно представить как произведение:
Видно, что у обоих многочленов есть общий множитель 7b. Значит, его можно вынести за скобки:
14ab — 63b 2 = 7b*2a — 7b*9b = 7b(2a-9b)
Проверить правильность вынесения множителя за скобки можно с помощью обратной операции – раскрытия скобки:
7b(2a — 9b) = 7b*2a — 7b*9b = 14ab — 63b 2
Важно понимать, что часто полином можно разложить несколькими способами, например:
5abc + 6bcd = b(5ac + 6cd) = c(5ab + 6bd) = bc(5a + 6d)
Обычно стремятся вынести, грубо говоря, «наибольший» одночлен. То есть раскладывают полином так, чтобы из оставшегося полинома больше нечего нельзя было вынести. Так, при разложении
5abc + 6bcd = b(5ac + 6cd)
в скобках осталась сумма одночленов, у которых есть общий множитель с. Если же вынести и его, то общих множителей в скобках не останется:
b(5ac + 6cd) = bc(5a + 6d)
Разберем детальнее, как находить общие множители у одночленов. Пусть надо разложить сумму
8a 3 b 4 + 12a 2 b 5 v + 16a 4 b 3 c 10
Она состоит из трех слагаемых. Сначала посмотрим на числовые коэффициенты перед ними. Это 8, 12 и 16. В 3 уроке 6 класса рассматривалась тема НОД и алгоритм его нахождения.Это наибольший общий делитель.Почти всегда его можно подобрать устно. Числовым коэффициентом общего множителя как раз будет НОД числовых коэффициентов слагаемых полинома. В данном случае это число 4.
Далее рассмотрим буквенную часть. В ней должны быть переменные, которые есть во ВСЕХ слагаемых. В данном случае это a и b, а переменная c общей не является, так как не входит в первое слагаемое.
Далее смотрим на степени у этих переменных. В общем множителе у букв должны быть минимальные степени, которые встречаются в слагаемых. Так, у переменной a в многочлене степени 3, 2, и 4 (минимум 2), поэтому в общем множителе будет стоять a 2 . У переменной b минимальная степень равна 3, поэтому в общем множителе будет стоять b 3 :
8a 3 b 4 + 12a 2 b 5 v + 16a 4 b 3 c 10 = 4a 2 b 3 (2ab + 3b 2 c + 4a 2 c 10 )

В результате у оставшихся слагаемых 2ab, 3b 2 c, 4a 2 c 10 нет ни одной общей буквенной переменной, а у их коэффициентов 2, 3 и 4 нет общих делителей.
Выносить за скобки можно не только одночлены, но и многочлены. Например:
Еще один пример. Необходимо разложить выражение
5t(8y — 3x) + 2s(3x — 8y)
Решение. Напомним, что знак минус меняет знаки в скобках на противоположные, поэтому
-(8y — 3x) = -8y + 3x = 3x — 8y
Значит, можно заменить (3x – 8y) на – (8y – 3x):
5t(8y — 3x) + 2s(3x — 8y) = 5t(8y — 3x) + 2*(-1)s(8y — 3x) = (8y — 3x)(5t — 2s)
Ответ: (8y – 3x)(5t – 2s).
Запомним, что вычитаемое и уменьшаемое можно поменять местами, если изменить знак перед скобками:

Верно и обратное: минус, уже стоящий перед скобками, можно убрать, если одновременно переставить местами вычитаемое и уменьшаемое:

Этот прием часто используется при решении заданий.
Способ группировки
Рассмотрим ещё один способ разложения многочлена на множители, который помогает раскладывать полином. Пусть есть выражение
Вынести множитель, общий для всех четырех мономов, не получается. Однако можно представить этот полином как сумму двух многочленов, и в каждом из них вынести переменную за скобки:
ab — 5a + bc — 5c = (ab — 5a) + (bc — 5c) = a(b — 5) + c(b — 5)
Теперь можно вынести выражение b – 5:
a(b — 5) + c(b — 5) = (b — 5)(a + c)
Мы «сгруппировали» первое слагаемое со вторым, а третье с четвертым. Поэтому описанный метод называют способом группировки.
Пример. Разложим полином 6xy + ab– 2bx– 3ay.
Решение. Группировка 1-ого и 2-ого слагаемого невозможна, так как у них нет общего множителя. Поэтому поменяем местами мономы:
6xy + ab — 2bx — 3ay = 6xy — 2bx + ab — 3ay = (6xy — 2bx) + (ab — 3ay) = 2x(3y — b) + a(b — 3y)
Разности 3y – b и b – 3y отличаются только порядком переменных. В одной из скобок его можно изменить, вынеся знак минус за скобки:
Используем эту замену:
2x(3y — b) + a(b — 3y) = 2x(3y — b) — a(3y — b) = (3y — b)(2x — a)
В результате получили тождество:
6xy + ab — 2bx — 3ay = (3y – b)(2x – a)
Ответ: (3y – b)(2x – a)
Группировать можно не только два, а вообще любое количество слагаемых. Например, в полиноме
x 2 — 3xy + xz + 2x — 6y + 2z
можно сгруппировать первые три и последние 3 одночлена:
x 2 — 3xy + xz + 2x — 6y + 2z = (x 2 — 3xy + xz) + (2x — 6y + 2z) = x(x — 3y + z) + 2(x — 3y + z) = (x + 2)(x — 3y + z)
Теперь рассмотрим задание повышенной сложности
Пример. Разложите квадратный трехчлен x 2 – 8x +15.
Решение. Данный полином состоит всего из 3 одночленов, а потому, как кажется, группировку произвести не получится. Однако можно произвести такую замену:
Тогда исходный трехчлен можно представить следующим образом:
x 2 — 8x + 15 = x 2 — 3x — 5x + 15
x 2 — 3x — 5x + 15 = (x 2 — 3x) + (- 5x + 15) = x(x — 3) — 5(x — 3) = (x — 5)(x — 3)
Конечно, догадаться о замене – 8х = – 3х – 5х в приведенном примере нелегко. Покажем иной ход рассуждений. Нам надо разложить полином второй степени. Как мы помним, при перемножении многочленов их степени складываются. Это значит, что если мы и сможем разложить квадратный трехчлен на два множителя, то ими окажутся два полинома 1-ой степени. Запишем произведение двух многочленов первой степени, у которых старшие коэффициенты равны 1:
(x + a)(x + b) = x 2 + xa + xb + ab = x 2 + (a + b)x + ab
Здесь за a и b мы обозначили некие произвольные числа. Чтобы это произведение равнялось исходному трехчлену x 2 – 8x +15, надо подобрать подходящие коэффициенты при переменных:

С помощью подбора можно определить, что этому условию удовлетворяют числа a= – 3 и b = – 5. Тогда
(x — 3)(x — 5) = x 2 * 8x + 15
в чем можно убедиться, раскрыв скобки.
Для простоты мы рассмотрели только случай, когда у перемножаемых полиномов 1-ой степени старшие коэффициенты равны 1. Однако они могли равняться, например, 0,5 и 2. В этом случае разложение выглядело бы несколько иначе:
x 2 * 8x + 15 = (2x — 6)(0.5x — 2.5)
Однако, вынеся коэффициент 2 из первой скобки и умножив его на вторую, получили бы изначальное разложение:
(2x — 6)(0.5x — 2.5) = (x — 3) * 2 * (0.5x — 2.5) = (x — 3)(x — 5)
В рассмотренном примере мы разложили квадратный трехчлен на два полинома первой степени. В дальнейшем нам часто придется это делать. Однако стоит отметить, что некоторые квадратные трехчлены, например,
невозможно разложить таким образом на произведение полиномов. Доказано это будет позднее.
Применение разложение многочленов на множители
Разложение полинома на множители может упростить выполнение некоторых операций. Пусть необходимо выполнить вычисление значения выражения
2 + 2 2 + 2 3 + 2 4 + 2 5 + 2 6 + 2 7 + 2 8 + 2 9
Вынесем число 2, при этом степень каждого слагаемого уменьшится на единицу:
2 + 2 2 + 2 3 + 2 4 + 2 5 + 2 6 + 2 7 + 2 8 + 2 9 = 2(1 + 2 + 2 2 + 2 3 + 2 4 + 2 5 + 2 6 + 2 7 + 2 8 )
2 + 2 2 + 2 3 + 2 4 + 2 5 + 2 6 + 2 7 + 2 8
за х. Тогда записанное выше равенство можно переписать:
Получили уравнение, решим его (см. урок уравнения):
Теперь выразим искомую нами сумму через х:
2 + 2 2 + 2 3 + 2 4 + 2 5 + 2 6 + 2 7 + 2 8 + 2 9 = x + 2 9 = 510 + 512 = 1022
При решении этой задачи мы возводили число 2 только в 9-ую степень, а все остальные операции возведения в степень удалось исключить из вычислений за счет разложения многочлена на множители. Аналогично можно составить формулу вычисления и для других подобных сумм.
Теперь вычислим значение выражения
38.4 2 — 61.6 * 29.5 + 61.6 * 38.4 — 29.5 * 38.4
Посчитать это напрямую достаточно сложно. Однако можно применить метод группировки:
38.4 2 — 61.6 * 29.5 + 61.6 * 38.4 — 29.5 * 38.4 = 38.4 2 — 29.5 * 38.4 + 61.6 * 38.4 — 61.6 * 29.5 = 38.4(38.4 — 29.5) + 61.6(38.4 — 29.5) = (38.4 + 61.6)(38.4 — 29.5) = 8.9*100 = 890
Далее посмотрим, как можно использовать разложение полинома для доказательства делимости чисел. Пусть требуется доказать, что выражение
81 4 — 9 7 + 3 12
делится на 73. Заметим, что числа 9 и 81 являются степенями тройки:
81 = 9 2 = (3 2 ) 2 = 3 4
Зная это, произведем замену в исходном выражении:
81 4 — 9 7 + 3 12 = (3 4 ) 4 — (3 2 ) 7 + 3 12 = 3 16 — 3 14 + 3 12
3 16 — 3 14 + 3 12 = 3 12 (3 4 — 3 2 + 1) = 3 12 * (81 — 9 + 1) = 3 12 * 73
Произведение 3 12 •73 делится на 73 (так как на него делится один из множителей), поэтому и выражение 81 4 – 9 7 + 3 12 делится на это число.
Вынесение множителей может использоваться для доказательства тождеств. Например, докажем верность равенства
(a 2 + 3a) 2 + 2(a 2 + 3a) = a(a + 1)(a + 2)(a + 3)
Для решения тождества преобразуем левую часть равенства, вынеся общий множитель:
(a 2 + 3a) 2 + 2(a 2 + 3a) = (a 2 + 3a)(a 2 + 3a) + 2(a 2 + 3a) = (a 2 + 3a)(a 2 + 3a + 2)
Далее произведем замену 3a = 2a + a:
(a 2 + 3a)(a 2 + 3a + 2) = (a 2 + 3a)(a 2 + 2a + a + 2) = (a 2 + 3a)((a 2 + 2a) + (a + 2) = (a 2 + 3a)(a(a + 2) + (a + 2)) = (a 2 + 3a)(a + 1)(a + 2) = a(a + 3)(a + z)(a + 2) = a(a + 1)(a + 2)(a + 3)
Ещё один пример. Докажем, при любых значениях переменных x и у выражение
(x — y)(x + y) — 2x(x — y)
не является положительным числом.
Решение. Вынесем общий множитель х – у:
(x — y)(x + y) — 2x(x — y) = (x — y)(x + y — 2x) = (x — y)(y — x)
Обратим внимание, что мы получили произведение двух похожих двучленов, отличающихся лишь порядком букв x и y. Если бы мы поменяли местами в одной из скобок переменные, то получили бы произведение двух одинаковых выражений, то есть квадрат. Но для того, чтобы поменять местами x и y, нужно перед скобкой поставить знак минус:
Тогда можно записать:
(x — y)(y — x) = -(y — x)(y — x) = -(y — x) 2
Как известно, квадрат любого числа больше или равен нулю. Это относится и к выражению (у – х) 2 . Если же перед выражением стоит минус, то оно должно быть меньше или равным нулю, то есть не является положительным числом.
Разложение полинома помогает решать некоторые уравнения. При этом используется следующее утверждение:

Если в одной части уравнения стоит ноль, а в другой произведение множителей, то каждый из них следует приравнять нулю.
Пример. Решите уравнение (s – 1)(s + 1) = 0.
Решение. В левой части записано произведение мономов s – 1 и s + 1, а в правой – ноль. Следовательно, нулю должно равняться или s – 1, или s + 1:
s — 1 = 0 или s + 1 = 0
Каждое из двух полученных значений переменной s является корнем уравнения, то есть оно имеет два корня.
Пример. Решите уравнение 5w 2 – 15w = 0.
Решение. Вынесем 5w:
Снова в левой части записано произведение, а в правой ноль. Продолжим решение:
5w = 0 или (w — 3) = 0
Пример. Найдите корни уравнения k 3 – 8k 2 + 3k– 24 = 0.
Решение. Сгруппируем слагаемые:
k 3 – 8k 2 + 3k– 24 = 0
(k 3 – 8k 2 ) + (3k– 24) = 0
k 2 (k — 8) + 3(k — 8) = 0
k 2 + 3 = 0 или k — 8 = 0
k 2 = -3 или k = 8
Заметим, что уравнение k 2 = – 3 решения не имеет, так как любое число в квадрате не меньше нуля. Поэтому единственным корнем исходного уравнения является k = 8.
Пример. Найдите корни уравнения
(2u — 5)(u + 3) = 7u + 21
Решение: Перенесем все слагаемые в левую часть, а после сгруппируем слагаемые:
(2u — 5)(u + 3) = 7u + 21
(2u — 5)(u + 3) — 7u — 21 = 0
(2u — 5)(u + 3) — 7(u + 3) = 0
(2u — 5 — 7)(u + 3) = 0
2u — 12 = 0 или u + 3 = 0
Пример. Решите уравнение
(t 2 — 5t) 2 = 30t — 6t 2
(t 2 — 5t) 2 = 30t — 6t 2
(t 2 — 5t) 2 — (30t — 6t 2 ) = 0
(t 2 — 5t)(t 2 — 5t) + 6(t 2 — 5t) = 0
(t 2 — 5t)(t 2 — 5t + 6) = 0
t 2 — 5t = 0 или t 2 — 5t + 6 = 0
Далее решим по отдельности эти уравнения:
t = 0 или t — 5 = 0
Теперь займемся вторым уравнением. Перед нами снова квадратный трехчлен. Чтобы разложить его на множители методом группировки, нужно представить его в виде суммы 4 слагаемых. Если произвести замену – 5t = – 2t – 3t, то дальше удастся сгруппировать слагаемые:
t 2 — 2t — 3t + 6 = 0
t(t — 2) — 3(t — 2) = 0
T — 3 = 0 или t — 2 = 0
В результате получили, что у исходного уравнения есть 4 корня.
Как поменять местами вычитаемое и уменьшаемое
Argument ‘Topic id’ is null or empty
Сейчас на форуме
© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
| ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |