15.4 Арифметические операторы
Арифметические операторы по сути бинарный оператор. Возможные операции:
умножение
чтобы умножить два аргумента нестандартного типа, оператор умножения (*) должен быть перегружен.
деление
для того, чтобы разделить два аргумента нестандартного типа, оператор деления (/) должен быть перегружен.
сложение
чтобы сложить два аргумента нестандартного типа, оператор сложения (+) должен быть перегружен.
вычитание
чтобы вычесть аргумент нестандартного типа из др. аргумента, оператор вычитания (-) должны быть перегружен.
возведение в степень (exponentiation)
Для возведения аргумента в степень другого аргумента нестандартного типа, оператор возведения в степень (**) должен быть перегружен.
унарный минус
используется, чтобы взять отрицательное значение аргумента следующий за ним (это оператор одного аргумента) .
симметричная разность
Для вычисления симметрической разности 2 структур, оператор (><) должен быть перегружен.
Арифметический оператор принимает два параметра, за исключением унарного минуса, для который требуется только один параметр. Первый параметр должен иметь тип, который соответствует аргументу в левой части (до) оператора, второй параметр должен быть того типа, который находится справа (после) от арифметического оператора. Тип результата, должен соответствовать типу результаты арифметической операции.
Для компиляции следующего кода
Нужно определить оператор умножения так:
Operator * ( r : real ; z1 : complex ) z : complex ;
z . re := z1 . re * r ;
z . im := z1 . im * r ;
Как можно видеть, первый аргумент оператора имеет тип real , а второй имеет тип complex . Тип результата является complex .
Умножение и сложение вещественных и комплексных чисел коммутативные (можно переставлять аргументы) операции. Компилятор, однако, об этом не имеет ни малейшего представления, так что даже если оператор умножения вещественного на комплексное число определен, то компилятор не будет использовать это определение для умножения комплексного числа на вещественное, он использует определённый оператор для аргументов указанных только в таком порядке. Для коммутативности необходимо определить обе операции (оператор с разными комбинациями аргументов) .
Таким образом, учитывая приведенное выше определение оператора умножения, компилятор не примет следующий порядок следования аргументов:
Поскольку типы Z и R не совпадают с типами в определении оператора.
Причина такого поведения заключается в том, что вполне возможно, умножение не всегда коммутативно . Например , умножение матрицы (n, m) на матрицу (m, n) приведет к матрице (n, n) , в то время как результат умножение матрицы (m, n) на матрицу (n, m) представляет собой матрица (m, m) , т.е. операция не может быть одинаковой во всех случаях.
Умножение матриц
Три продавца продают четыре вида товаров. Количество проданного товара сведено в таблицу A.
В таблице B представлены цена каждого товара и комиссионные (наценка), получаемые от продажи.

Вырученные от продажи деньги подсчитываются так:
1-й продавец: 5 * 20.30 + 3 * 18.60 + 7 * 12.10 + 0 * 23.00 = 242.00
2-й продавец: 7 * 20.30 + 1 * 18.60 + 9 * 12.10 + 2 * 23.00 = 315.60
3-й продавец: 3 * 20.30 + 4 * 18.60 + 7 * 12.10 + 6 * 23.00 = 358.00
А полученные комиссионные так:
1-й продавец: 5 * 1.60 + 3 * 1.30 + 7 * 1.00 + 0 * 1.80 = 18.90
2-й продавец: 7 * 1.60 + 1 * 1.30 + 9 * 1.00 + 2 * 1.80 = 25.10
3-й продавец: 3 * 1.60 + 4 * 1.30 + 7 * 1.00 + 6 * 1.80 = 27.80
Эти вычисления называются умножением матриц и записываются так, как представлено на рисунке выше. Число столбцов таблицы A должно совпадать с числом строк таблицы B. Результирующая таблица C имеет столько строк, сколько у A, и столько столбцов, сколько у B.
Следующая программа вводит матрицы A и B, перемножает их, затем выводит их произведение – матрицу C.
Программа на языке Паскаль:
type atype = array[1..3,1..4] of integer; btype = array[1..4,1..2] of real; ctype = array[1..3,1..2] of real; var a: atype; b: btype; c: ctype; n,i,j,k: integer; begin for n := 1 to 3 do readln(a[n,1],a[n,2],a[n,3],a[n,4]); for n := 1 to 4 do readln(b[n,1],b[n,2]); for i := 1 to 3 do for j := 1 to 2 do begin c[i,j] := 0; for k := 1 to 4 do c[i,j] := c[i,j] + a[i,k] * b[k,j]; end; for n := 1 to 3 do writeln(c[n,1]:8:2, c[n,2]:8:2); end.
Операции с числами
После объявления переменной, вы можете присвоить ей значение, для этого используется оператор :=. Переменной можно присвоить как единственное значение, так и математическую последовательность.
var x : integer; y : real; begin x := 1; y := 1/3 + 1/4; end.
При использовании присваивания, необходимо следить за правильностью типов данных. Если присвоить переменной значение несоответствующего типа, то это приведет к ошибке.
Арифметические операции в языке программирования Паскаль
Pascal поддерживает все арифметические операции, операции можно применять к числам, переменным и константам.
Сложение двух чисел или унарный плюс
a := +2; b := 4 + 1; //5
Вычитание двух чисел или унарный минус
c := -3; d := 6 - 5; //1
Умножение двух чисел
e := 7 * 3; //21
Разработчику о работе с 1С:Предприятие, Pascal, Паскаль
Pascal (Паскаль). Сложение, вычитание, умножение, деление простых чисел. Div, Mod.
03.05.2017 |
Автор Дмитрий
Pascal (Паскаль). Сложение, вычитание, умножение, деление простых чисел. Div, Mod.
Код:
program Plus_Task; //программа Сложение вычитание умножение деление div mod простых чисел в Паскаль uses crt; var i_Num: integer; begin i_Num := 2; i_Num := 2 + i_Num; //сложение Writeln('2+2 = ', i_Num); i_Num := 7 - 4; // вычитание Writeln('7-4 = ', i_Num); i_Num := 7 * 4; // умножение Writeln('7*4 = ', i_Num); i_Num := 15 div 3; // целочисленное деление div Writeln('15 div 3 = ', i_Num); i_Num := 56 div 5; // целочисленное деление div Writeln('56 div 5 = ', i_Num); // получим 11 i_Num := 56 mod 5; // целочисленное деление mod Writeln('56 mod 5 = ', i_Num); // получим 1 //завершение работы программы WriteLn('Нажмите , чтобы выйти.'); ReadLn(); end.
Сложение, вычитание, умножение, деление простых чисел в (Паскаль) Pascal.
Как найти остаток от деления (операция Mod)?
В качестве примера поделим целое число 56 на 5. Как в нашем примере. Делим столбиком:
Как найти остаток от деления (Mod), деление столбиком в (Паскаль) Pascal.
Результат: 11 — неполное частное, 1 — остаток от деления.
Привожу формулу:
a=b*c+d,
где a, b, c, d — целые числа. Причем: a (делимое), b (делитель), c (неполное частное от деления), d (остаток от деления).
Пример:
a=56 (делимое)
b=5 (делитель)
c=11 (неполное частное от деления)
d=1 (остаток от деления)
56=5*11+1
56=56 // ответ верно
![]()
Рубрика: Pascal — программирование