Форум программистов, компьютерный форум CyberForum.ru

калькулятор - C++

Восстановить пароль Регистрация
 
СаньчО
1 / 1 / 0
Регистрация: 08.03.2014
Сообщений: 42
09.03.2014, 06:36     калькулятор #1
Всем привет, извините, что постю сюда эту тему, но выхода нет((( Проблема состоит в том что надо сделать калькулятор из множества действий +-*/ то есть у меня 8+8, а мне надо 8+8*3/2 как то так( Хотя бы действий 15 сделать! Возможно у кого то есть исходники? Прошу вас откликнитесь, выхода у меня больше нет, все облазил ни где не нашел((( Работаю в buildere c++

P.S. пока у меня вот такой код:

C++
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
void __fastcall TForm2::LabeledEdit3Change(TObject *Sender)
{
    UnicodeString primer = LabeledEdit3->Text.Trim(); //Trim убирает пробелы в начале и в конце строки
    while (primer.Pos(".")) {
        primer[primer.Pos(".")] = ',';
    }
    if(LabeledEdit3->Text == "")
    LabeledEdit4->Text = 0;
    if (primer.Pos("+") >0) {
        int pos = primer.Pos("+");
        UnicodeString levo = primer.SubString(0,pos-1).Trim();
        UnicodeString pravo = primer.SubString(pos+1,primer.Length()-(pos)).Trim();
        if (levo.IsEmpty() || pravo.IsEmpty()) {
            return;
        }
        double vivod = levo.ToDouble() + pravo.ToDouble();
        LabeledEdit4->Text=FloatToStr(vivod);
    }
    if (primer.Pos("-") >0) {
        int pos = primer.Pos("-");
        UnicodeString levo = primer.SubString(0,pos-1).Trim();
        UnicodeString pravo = primer.SubString(pos+1,primer.Length()-(pos)).Trim();
        if (levo.IsEmpty() || pravo.IsEmpty()) {
            return;
        }
        double vivod = levo.ToDouble() - pravo.ToDouble();
        LabeledEdit4->Text=FloatToStr(vivod);
    }
    if (primer.Pos("*") >0) {
        int pos = primer.Pos("*");
        UnicodeString levo = primer.SubString(0,pos-1).Trim();
        UnicodeString pravo = primer.SubString(pos+1,primer.Length()-(pos)).Trim();
        if (levo.IsEmpty() || pravo.IsEmpty()) {
            return;
        }
        double vivod = levo.ToDouble() * pravo.ToDouble();
        LabeledEdit4->Text=FloatToStr(vivod);
    }
    if (primer.Pos("/") >0) {
        int pos = primer.Pos("/");
        UnicodeString levo = primer.SubString(0,pos-1).Trim();
        UnicodeString pravo = primer.SubString(pos+1,primer.Length()-(pos)).Trim();
        if (levo.IsEmpty() || pravo.IsEmpty()) {
            return;
        }
        if (pravo.ToDouble() ==0) {
            LabeledEdit4->Text="делить на 0 нельзя";
        }
        else {
            double vivod = levo.ToDouble() / pravo.ToDouble();
            LabeledEdit4->Text=FloatToStr(vivod);
        }
 
    }
}
 
//---------------------------------------------------------------------------
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2014, 06:36     калькулятор
Посмотрите здесь:

Калькулятор на С++ C++
C++ Калькулятор на С
C++ Калькулятор
Калькулятор C++
Калькулятор C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LVV
56 / 56 / 3
Регистрация: 15.02.2010
Сообщений: 239
09.03.2014, 07:24     калькулятор #2
Если числа одноразрядные, как в Вашем примере, то обработка строки (выражения) в консольном приложении на Visual Studio выглядит примерно так:
Вариант 13 из http://lvvas.pp.ua/index.php?option=...168&Itemid=210
СаньчО
1 / 1 / 0
Регистрация: 08.03.2014
Сообщений: 42
09.03.2014, 08:35  [ТС]     калькулятор #3
Цитата Сообщение от LVV Посмотреть сообщение
Если числа одноразрядные, как в Вашем примере, то обработка строки (выражения) в консольном приложении на Visual Studio выглядит примерно так:
Вариант 13 из http://lvvas.pp.ua/index.php?option=...168&Itemid=210
968+5/2/2=10,25 а должно быть 243,25
Ev[G]eN
09.03.2014, 10:59     калькулятор
  #4
 Комментарий модератора 
Данная тема уже создана Вами в разделе "C++ Builder"(Тема: Вычисление выражения, введенного в Edit).
Ознакомьтесь с Правилами нашего Форума. Особое внимание уделите пункту №5.5:
"Запрещено размещать тему в нескольких разделах одновременно (кросспостинг), а также дублировать тему в одном разделе."
Данная тема закрыта!
Yandex
Объявления
09.03.2014, 10:59     калькулятор
Закрытая тема Создать тему
Опции темы

Текущее время: 16:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru