Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
3 / 3 / 0
Регистрация: 19.09.2012
Сообщений: 29
1

Реализация строчного калькулятора

16.11.2012, 01:13. Просмотров 822. Ответов 1
Метки нет (Все метки)

Подскажите, пожалуйста, как реализовать "Строчный калькулятор", а именно в edit ввожу 2*2 или 2/2 и т.п.

Добавлено через 25 минут
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
  a, b, c: extended;
  str, str1: string;
begin
  str := Edit1.Text;
  str1 := str;
  i := pos('+', str);
  delete(str, i, length(str)); // удаляем левую часть
  a := strtofloat(str); // a = ЧИСЛО ДО +
 
  delete(str1, 1, i); // удаляем правую часть
  b := strtofloat(str1); // b = ЧИСЛО ПОСЛЕ +
  c := a + b;
  Edit1.Text := floattostr(c);
 
end;
 
end.
Вот что - то получилось. Но только со сложением.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.11.2012, 01:13
Ответы с готовыми решениями:

Строчного калькулятор
Нужна помощь с созданием строчного калькулятора (ввод в строку чисел и мат.знаков).

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

Реализация калькулятора в Qt
Ребят, помогите ,пожалуйста! Необходимо ( к моему великому сожалению!) сделать нечто похожее на...

Реализация простого калькулятора
Помогите пожалуйста сделать простой калькулятор мне нужно хотя бы деление или умножение остальное...

1
1299 / 705 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
16.11.2012, 02:48 2
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// простой двучисловой парсер строки для калькуляции положительных чисел с плавающей запятой
function calc_str_simple(const str:string):double;
var a,b: double; buff: string; i,z,k:integer;
begin
  result:=0;
    buff:=str;
    // чистка мусора
  z:=0;  k:=1;
    for i:=length(buff) downto 1 do
        if not (buff[i] in ['0'..'9','*','-','+','/',DecimalSeparator]) then begin
      Delete(buff,i,1); dec(k);
    end else if (buff[i] in ['*','-','+','/']) then begin
      inc(z);
      k:=i;
    end;
  if z<>1 then exit; // неверное выражение
  // анализ чисел числа
  if tryStrToFloat(copy(buff,1,k-1),a) and
     tryStrToFloat(copy(buff,k+1,length(buff)),b) then
     // числа прочитаны
     case buff[k] of
     '*' : result:= a*b;
     '-' : result:= a-b;
     '+' : result:= a+b;
     '/' : if b>0 then result:= a/b;
     end; // end case
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit2.Text:=FloatToStr(calc_str_simple(Edit1.Text));
end;
Добавлено через 10 минут
версия 2
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// ïðîñòîé äâó÷èñëîâîé ïàðñåð ñòðîêè äëÿ êàëüêóëÿöèè ïîëîæèòåëüíûõ ÷èñåë ñ ïëàâàþùåé çàïÿòîé
function calc_str_simple2(const str:string):double;
var a,b: double; buff: string; i,z:integer;
begin
  result:=0;
  buff:=str;
  z:=0;
  for i:=1 to length(buff) do
    if buff[i] in ['*','-','+','/'] then begin z:=i; break; end;
  if z=0 then exit; // íåâåðíîå âûðàæåíèå
  if tryStrToFloat(trim(copy(buff,1,z-1)),a) and
     tryStrToFloat(trim(copy(buff,z+1,length(buff))),b) then
     // ÷èñëà ïðî÷èòàíû
     case buff[z] of
     '*' : result:= a*b;
     '-' : result:= a-b;
     '+' : result:= a+b;
     '/' : if b>0 then result:= a/b;
     end; // end case
end;
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2012, 02:48

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Реализация калькулятора на PHP
По заданию необходимо создать калькулятор на PHP. Я сделал набросок, но как делать код выполнения -...

Реализация онлайн калькулятора
Вообщем нужна такая штука, наподобие http://unior-print.ru/kalkulyator.html Сделал ее в Эксаеле,...

Реализация калькулятора квадратных уравнений
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { setlocale(0, &quot;&quot;);...

Реализация консольного калькулятора с обработкой строк
Реализация консольного калькулятора с обработкой строк. Помогите чем кто может, заранее спасибо:)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.