Как сделать умножение в делфи

Добавил пользователь Morpheus
Обновлено: 09.09.2024

Создадим универсальный калькулятор на Delphi, который будет считать множество функций.
Приступим..
Для начала нам нужен 1 Edit..сразу-же очищаем его Text, на событие OnKeyPress пишем следующий код:

Дабы обезопаситься от ввода типа:"0,1,2,33" на событие OnChange пишем следующий код

Дабы полностью обезопаситься от некорректного ввода, ставим
DragMode: dmAutomatic ;
После того как у нас получилось неуязвимое поле, пришло время для создания кнопок калькулятора, сначала
создадим 16 кнопок (Button): Числа от 0 до 9-ти, кнопку для запятой, знака равно, знаков плюс, минус,
умножить и поделить.
Сперва стоит обеспечить ввод чисел, для этого на событие OnClick чисел от 0..9 и запятой пишем следующее:


Повторим процедуру для всех остальных чисел и знака запятой..На событие OnClick числа "0" стоит дописать ещё одну строку:

Дальше нам нужно запоминать числа которые подаются на ввод и выводить их, создадим три глобальные переменные и одну переменную типа char для запоминания математических действий:

Сначала нам нужно считать первое число, на знаки "+","-","*","/" пишем следующий код:

Стоить повторить и для остальных действий..
Далее нам нужно считать вторую переменную, по этому на событие OnClick знака равно, пишем:

Вуаля, у нас получился простейший калькулятор, но я ведь обещал вам совсем другой, по-этому создадим дополнительно 24 кнопки (Button) для разных функций;
Одну из этих кнопок называем:"Pi", на событие OnClick этой кнопки пишем:

Далее переименовываем Button`ы на "cos","sin","arctg", на событие OnClick пишем:

Проделать тоже самое с остальными функциями..
Дальше переименовываем две кнопки для вычисления sqr и sqrt..пишем:

Повторить и для "sqr"
Вы наверное спросите, а как-же насчёт ввода отрицательных чисел?
Для этого переименовываем ещё одну кнопку в "+/-"
На событие OnClick пишем:

Далее вернемся немного назад и напишем ещё пару функций для действий с двумя числами. в событии OnClick знака равно, введем две локальные переменные, например: q и w;
Теперь переименуем 6 кнопок в "mod","div","or","xor","and","x^y";
Что писать на событие OnClick этих кнопок можно прочесть выше
Теперь пришло считать второе число и вывести результат..О том как это сделать, написано выше.
В итоге текст на событии OnClick знака равно будет иметь такой вид:

Далее переименуем кнопку в "х!", на событие OnClick пишем:

Переименуем ещё две кнопки в "x^2" и "x^3" на событие OnClick кнопки "x^2" пишем:

Для кнопки "x^3" - аналогично.
Переименуем ещё одну кнопку в exp (Експонента), на OnClick Этой кнопки пишем:

Переименуем следующую кнопку в "Int" (Возвращение целой части), пишем:

Следующая кнопка "not" (Возвращение противоположного числа + (-1) ).Пишем:

Следующей будет кнопка "ln". Пишем:

Следующая кнопка "1/х". Пишем аналогично предыдущему.
Следующая - кнопка Backspace. Пишем:

На нашем сайте вы найдете множество статей на разные тематики, а так же сможете найти и скачать много интересного Рекомендуем Вам добавить Наш сайт в закладки, а также подписаться на RSS ленту, чтобы не пропускать интересных новостей.

Инфо

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Label3: TLabel;
procedure Button1Click(Sender: TObject);

var
Form1: TForm1;

mes := mes+ 'Пробег: '
+ FloatToStrF(c,ffgeneral, 8, 4) +' км.';
Form1.Label3.Caption := mes;
end;

Вас можно поздравить с созданием в Delphi первого приложения для Windows. А теперь испытайте свои силы в построении чуть-чуть более сложного приложения, которое хоть что-нибудь вычисляет. Создайте приложение, которое при нажатии кнопки перемножало бы два числа, введенных пользователем, и показывало бы результат умножения. Эти числа можете понимать, как хотите: как длину двух сторон прямоугольника, и тогда результат — это площадь, или как текущий курс доллара и сумму в долларах — тогда результатом будет рублевый эквивалент суммы и т.п.

При построении этого приложения мы используем новые типы компонентов — окна редактирования. Кроме того, для разнообразия, будем выводить результат не в метку Label, а в панель Panel, просто для того, чтобы испытать новый компонент. При создании этого приложения я уже не буду так подробно описывать каждое действие, а ограничусь только общий описанием интерфейса и необходимых кодов.

Откроите новое приложение. Перенесите на него со страницы библиотеки Additional два окна редактирования с присоединенными к ним метками LabeledEdit, а со страницы библиотеки Standard — одну панель Panel, одну кнопку Button и одну метку Label для надписи. Разместите все это примерно так, как показано на рисунке 10.

Так вы можете поступить, если работаете с Delphi 7 или 6. Если вы работаете с более ранними версиями, то в них компонента LabeledEdit нет. Поэтому, вместо двух компонентов LabeledEdit вам надо будет перенести на форму два окна редактирования Edit со страницы Standard и две метки.

Попробуйте поварьировать такими свойствами панели, как BevelInner и BevelOuter, которые определяют вид (утопленный — bvLowered или выпуклый — bvRaised) основного поля и рамки панели. Например, можете установить BevelInner = bvLowered и BevelOuter = bvRaised. Для того, чтобы ваше приложение выглядело с учётом тем Windows XP, вам необходимо добавить XPman со страницы Win32.

В итоге ваша форма приобретет вид, показанный на рис. 11

Осталось написать обработчик щелчка кнопки. Единственный оператор этого обработчика может иметь вид:

Panel1.Caption := LabeledEdit1.Text + ' * ' + LabeledEdit2.Text + ' = ' + FloatToStr(StrToFloat(LabeledEdit1.Text) * StrToFloat(LabeledEdit2.Text));

Для версий младше Delphi 6 изменяются только имена окон: вместо LabeledEdit1 и LabeledEdit2 надо писать Edit1 и Edit2.

Ваше приложение готово. Можете его сохранить — ведь оно все-таки умеет делать нечто полезное. Для этого лучше всего создать отдельный подкаталог (папку Windows) и выполнить команду File | Save All. Проще эту команду выполнять с помощью соответствующей быстрой кнопки.

Откомпилируйте свое приложение и выполните его (рисунок 12). Убедитесь, что оно нормально работает и мгновенно перемножает самые замысловатые многоразрядные числа.

Код программы по сложению и умножению матриц.
Элементы TStringGrid в Delphi 7.

Простейший код для первокурсников… Открыт для скачивания и доработки…

Сложение и умножение матриц

Рис.1 Результат перемножения матриц

Данная программа является простейшим калькулятором для решения примеров с использованием матричной арифметики.

Сложение матриц

Обязательным условием для сложения (вычитания) матриц является полное совпадение их размеров… И результирующая матрица будет иметь то же самое количество строк и столбцов, какое имели матрицы-слагаемые… Каждый элемент новой матрицы (с индексами ij) будет равен сумме элементов слагаемых матриц (с теми же индексами ij).

Вычитание матриц

Умножение матриц

Обязательным условием для умножения матриц является совпадение количества столбцов первой матрицы и количество строк второй матрицы… А результирующая матрица будет иметь то же самое количество строк, что и первая матрица, и то же самое количество столбцов, что и вторая матрица…

Так если имеем матрицу А с размерами i,k и матрицу B с размерами k,j то результатом будет матрица С с размерами i,j. Каждый элемент новой матрицы (с индексами ij) будет равен сумме произведений элементов
i-строки первой матрицы на элементы j-столбца второй матрицы.

Формула элемента при умножении матриц

Или можно сказать, что каждый элемент новой матрицы будет равен скалярному произведению i-вектора-строки первой матрицы на j-вектор-столбец второй матрицы…

А количество элементов в этих векторах должно обязательно совпадать…

Деление матриц

Деление заменяется операцией умножения на обратную матрицу… Алгоритм получения обратной матрицы (которая и обозначается как матрица в -1 степени) не сложен, но чтобы его описать пришлось бы описывать алгоритм вычисления определителя матрицы и так до бесконечности… одно понятие строится на базе других понятий… Если Вам это понадобится , то Вы без труда найдете эту информацию на просторах интернета…

Читайте также: