Навигация сайта

  • Главная
  • Статьи
  • Учебники
  • Программы
  • Друзья сайта
Программирование в delphi 7 калькулятор

Собираем консольный калькулятор на Delphi

Сейчас мы создадим программу, которая будет вычислять значения синуса, косинуса, тангенса и котангенса и, естественно, выводить результаты. Но не это главное. Наше приложение будет весить 42 КБ!
Итак, пользователь введет какую-нибудь строку вида F(x), где F - sin, cos, tg или ctg; x - определяемый угол в градусах, и после этого только остается узнать, какой именно функцией он это нагрузил нас! К счастью, Delphi предоставляет большие возможности для работы с текстом - смотрите ниже и убедитесь программирование в delphi 7 калькулятор

program CoolCalc; //Выберите File>New>Other>Console Application,
//чтобы создать консольное приложение
{$APPTYPE CONSOLE} 

uses
SysUtils,
Math; //!!

const
Symbols: Array[0..5] of PChar = ('sin', 'cos', 'ctg', 'tg', '(', ')');

var
Func, 
//строка, введенная юзером 
Num: ShortString;
//вид тригонометрической функции

function GetValue(SubStr: PChar; s: ShortString): String;
var
i: smallint;
begin
repeat
//Есть ли в строке искомые функции?
i:=pos(SubStr,s);
//Если есть - удаляем...
delete(s,i,StrLen(SubStr));
//...и запоминаем
if (i>0) and (SubStr<Symbols[4]) then Num:=SubStr;
until i<=0;
Result:=s;
end;

procedure GetResult;
var
n: smallint;
begin
//Ищем в строке функции
for n:=0 to 5 do Func:=GetValue(Symbols[n],Func);
//Решаем
if Num = 'cos' then Writeln('Result: ' + FloatToStr(cos(DegToRad(StrToFloat(Func)))) + #10);
if Num = 'sin' then Writeln('Result: ' + FloatToStr(sin(DegToRad(StrToFloat(Func)))) + #10);
if Num = 'tg' then Writeln('Result: ' + FloatToStr(tan(DegToRad(StrToFloat(Func)))) + #10);
if Num = 'ctg' then Writeln('Result: ' + FloatToStr(cotan(DegToRad(StrToFloat(Func)))) + #10);
end;

begin
while true do begin //Запускам вечный цикл
Writeln('Enter function' + #10);
Readln(Func);
GetResult;
end;
end.

По совести говоря, нужно еще, чтобы прога решала уравнения 42-й степени, находила производную и вела лог, но я надеюсь, что вам не составит труда реализовать это, тем самым способствуя тригонометрии и софтостроению :).

 

Техническая поддержка и аудит сайта.