Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ЛазаретЪ
1 / 1 / 0
Регистрация: 04.02.2011
Сообщений: 30
#1

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

19.05.2011, 13:34. Просмотров 782. Ответов 1
Метки нет (Все метки)

Есть содержимое файлов, из них нужно составить проект. Вроде просто, но у меня не получается.. Если кто может - скиньте ссылку на архив с собраным проектом.

Logarithm.h
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
#include <iostream.h>
#include <iomanip.h>
class logarithm
{
    float osn;
    float number;
    float rez;
    float Calculate();
public:
    logarithm();
    logarithm(float OSN, float NUMBER);
    logarithm(const logarithm &op1);
    void SetOsn(float OSN);
    void SetNumber(float NUMBER);
    float GetRezult();
    float GetOsn();
    float GetNumber();
    void Print();
    float operator +(logarithm&);
    float operator -(logarithm&);
    float operator *(logarithm&);
    float operator /(logarithm&);
    float operator ^(float st);
};
Logarithm.cpp
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <math.h>
#include "logarithm.h"
#include <iostream.h>
#include <ctype.h>
float logarithm::Calculate()
{
    if(number==1) return 0;
    if(osn==1) return 1;
    if(number==osn) return 1;
    return log(number)/log(osn);
}   
logarithm::logarithm()
{
    osn=1;
    number=1;
    rez=0;
};
logarithm::logarithm(float OSN,float NUMBER)
{
    if(NUMBER==0)
        {
        cout<<"Нельзя вводить 0 в качестве основания. Основание установлено в 1";
        number=1;
        }
    else
        number=NUMBER;
 
    if(OSN==0)
        {
        cout<<"Нельзя вводить 0 в качестве числа. Число установлено в 1";
        osn=1;
        }
    else
        osn=OSN;
 
    rez=Calculate();
};
logarithm::logarithm(const logarithm &op1)
{
    osn=op1.osn; 
    number=op1.number;
    rez=op1.rez;
}
float logarithm::GetRezult()
{
    return rez;
};
void logarithm::SetOsn(float OSN)
{
    if(OSN==0)
    {
        cout<<" Нельзя вводить 0 в качестве основания. Основание установлено в 1
        osn=1;
    }
    else
        osn=OSN;
    rez=Calculate();
};      
void logarithm::SetNumber(float NUMBER)
{
    if(NUMBER==0)
    {
        cout<<" Нельзя вводить 0 в качестве числа. Число установлено в 1";
        number=1;
    }
    else
        number=NUMBER;
    rez=Calculate();
};
float logarithm::operator +(logarithm &op1)
{   
    return rez+op1.GetRezult();
};
float logarithm::operator -(logarithm &op1)
{   
    return rez-op1.GetRezult();
};
float logarithm::operator *(logarithm &op1)
{   
    return rez*op1.GetRezult();
};
float logarithm::operator /(logarithm &op1)
{
    if(op1.GetRezult()!=0)
        return rez/op1.GetRezult();
    cout<<"!!!Деление_на_0!!!"<<endl;
    return -1;
};
float logarithm::operator ^(float st)
{
    
    return pow(rez,st);
};
void logarithm::Print()
{
    cout<<"log"<<osn<<"_"<<number<<"="<<rez<<endl;      
};
float logarithm::GetOsn()
    {
        return osn;
    };
float logarithm::GetNumber()
    {
        return number;
    };
Calc.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "logarithm.h"
class calc
{
char* acop;
char operation; 
float rezult;
float st;
public:
    logarithm op1;
    logarithm op2;  
    calc();
    calc(logarithm OP1,logarithm OP2,char OPERATION);   
    void Calculate();
    void InputLog(int i);
    float GetSt();
    float GetRezult();
    char GetOperation();
    bool SetOperation(char OPERATION);
    void ChangeOsn(float OSN);
    void Print();
};
Calc.cpp
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include "calc.h"
#include <iostream.h>
void calc::Calculate()
    {
        if(operation=='+')rezult=op1+op2;
        if(operation=='-')rezult=op1-op2;
        if(operation=='*')rezult=op1*op2;
        if(operation=='/')rezult=op1/op2;
        if(operation=='^')rezult=op1^st;
    };
calc::calc()
    {
        acop="+-*^/";
        logarithm op1;
        logarithm op2;
        operation='+';
        st=1;
        Calculate();
    };
calc::calc(logarithm OP1,logarithm OP2,char OPERATION)
    {
        acop="+-*^/";
        op1=OP1;
        op2=OP2;
        st=1;
        operation=OPERATION;
        Calculate();
    };
bool calc::SetOperation(char OPERATION)
    {
        bool ok=false;
        for(int i=0;i<=sizeof(acop);i++)
            if(OPERATION==acop[i]) ok=true;
        if(ok==false)
            {
                cout<<"Недопустимая_операция"<<endl;
                return false;
            }
        else
            {
                if(OPERATION=='^')
                    {
                        cout<<"введите_степень";
                        cin>>st;
                    };
                operation=OPERATION;
                Calculate();
                return true;
            };
        
    };      
void calc::Print()
    {
        if(operation=='^')
            cout<<"log"<<op1.GetOsn()<<"_"
            <<op1.GetNumber()<<operation<<st<<"="<<rezult<<endl;
        else
            cout<<"log"<<op1.GetOsn()<<"_"
            <<op1.GetNumber()<<operation<<"log"<<op2.GetOsn()
            <<"_"<<op2.GetNumber()<<"="<<rezult<<endl;
    };
void calc::InputLog(int i)
    {
        float OSN;
        float NUMBER;
        cout<<"введите основание:";cin>>OSN;
        if(i==1)
            op1.SetOsn(OSN);
        else
            op2.SetOsn(OSN);
        cout<<"введите число:";cin>>NUMBER;
        if(i==1)
            op1.SetNumber(NUMBER);
        else
            op2.SetNumber(NUMBER);
        Calculate();
    };
void calc::ChangeOsn(float OSN)
    {
        float i;
        i=op1.GetOsn();
        op1.SetOsn(OSN);
        op2.SetOsn(OSN);
        op2.SetNumber(i);
        operation='/';
        Calculate();
    };
char calc::GetOperation()
    {
        return operation;
    };
float calc::GetRezult()
    {
        return rezult;
    };
float calc::GetSt()
    {
        return st;
    };
Dialog.h
C++
1
2
3
4
5
6
7
8
9
#include "calc.h"
class dialog
    {
        calc c;
        void WriteLog(int i);
        void ReadLog();
    public:
        bool menu();
    };
Dialog.cpp
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include "dialog.h"
#include <iostream.h>
#include <fstream.h>
#include <string.h>
void dialog::WriteLog(int i)
    {
    ofstream stream("log",ios::app);    
        if(i==1)
{stream<<"Ввод_первого_оператора: log"<<c.op1.GetOsn()<<"_" <<c.op1.GetNumber()<<"="<<c.op1.GetRezult()<<endl;
            };
        if(i==2)
{stream<<" Ввод_первого_оператора: log"<<c.op2.GetOsn()<<'_'<<c.op2.GetNumber() <<"="<<c.op2.GetRezult()<<endl;
            };
        if(i==3)
            {
                if(c.GetOperation()=='^')
stream<<"Вывод_результата:log"<<c.op1.GetOsn() <<'_'<<c.op1.GetNumber()
                <<c.GetOperation()<<c.GetSt()<<"="<<c.GetRezult()<<endl;
                else
stream<<"Вывод_результата:log"<<c.op1.GetOsn()<< _'<<c.op1.GetNumber()
                <<c.GetOperation()<<"log"<<c.op2.GetOsn()<<'_'<<c.op2.GetNumber()
                <<"="<<c.GetRezult()<<endl;
            };
        if(i==4)
            {
                stream<<"Выбор_операции:"<<c.GetOperation()<<endl;
                if(c.GetRezult()==-1)
                    stream<<"!!!Деление_на_0!!!"<<endl;
            };
        if(i==41)
            {
                stream<<"Выбор_операции:Недопустимая операция"<<endl;
            };
        if(i==5)
            {
                stream<<"Переход_к_другому_основанию:"<<c.op1.GetOsn()<<endl;
            };
    };
 
void dialog::ReadLog()
    {
        char s[50];
        ifstream stream("log");     
        while(stream>>s) 
            cout<<s<<endl;
    };
 
 
bool dialog::menu()
    {
        int pm;
        int OSN;
        char op;
        bool ok=false;
        cout<<"1: ввести первый оператор"<<endl;
        cout<<"2: показать первый оператор "<<endl;
        cout<<"3: ввести второй оператор "<<endl;
        cout<<"4: показать второй оператор "<<endl;
        cout<<"5: ввести вид операции"<<endl;
        cout<<"6: выполнить переход оператора 1 к заданному основанию "<<endl;
        cout<<"7: вывести результат операции"<<endl;
        cout<<"8: показать лог-файл"<<endl;
        cout<<"9: выход"<<endl;
 
        while((pm>9)|(pm<1))
            cin>>pm;
        if(pm==1) {c.InputLog(1);WriteLog(1);return false;};
        if(pm==2) {c.op1.Print();return false;};
        if(pm==3) {c.InputLog(2);WriteLog(2);return false;};
        if(pm==4) {c.op2.Print();return false;};
        if(pm==5) 
            while(ok==false)
                {
                    cout<<"введите операцию:"; 
                    cin>>op;
                    ok=c.SetOperation(op);
                    if(ok==true)WriteLog(4);
                    else WriteLog(41);
                    return false;
                };
        if(pm==6) 
            {
                cout<<"введите основание";
                cin>>OSN;
                c.ChangeOsn(OSN);
                WriteLog(5);
                return false;
            };
        if(pm==7) {c.Print();WriteLog(3);return false;};
        if(pm==8) {ReadLog();return false;};
        if(pm==9) {return true;};
 
    };
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2011, 13:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Собрать калькулятор (C++):

Простой калькулятор и калькулятор с парсингом - C++
Ребят я совсем не давно только начал изучать сишку, решил написать простенький калькулятор который работает с 2 числами. Возник вопрос, как...

Не получается собрать программу - C++
Здравствуйте ! Использую &quot;Geany&quot; в ОС &quot;Linuxmint 17&quot; Столкнулся с такой проблемой, пытаюсь создать класс в двух отдельных файлах &quot;.cpp&quot;...

Как собрать TXLib - C++
Вот это чудо... http://txlib.ru/ Как тривиальный код компиляции, так и попытка модификации по документации - выводит море ошибок ...

Как собрать проект - C++
#include &lt;winbgim.h&gt; #include &lt;alloc.h&gt; #include &lt;stdio.h&gt; using namespace std; int COL=15, //основной цвет ...

Игра на С++ как собрать? - C++
Проблемы: выдает 7 непонятных ошибок которые не удается найти не могу придумать мэйн чтобы работало все суть игры что...

Не могу собрать программу - C++
собираю в netbeans + cygwin исходники выдает ошибку не знаю как исправить. TCPClient.cpp // TCPClient.cpp : Defines the entry...

1
ЛазаретЪ
1 / 1 / 0
Регистрация: 04.02.2011
Сообщений: 30
20.05.2011, 14:41  [ТС] #2
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <math.h>
#include "logarithm.h"
#include <iostream.h>
#include <ctype.h>
float logarithm::Calculate()
{
    if(number==1) return 0;
    if(osn==1) return 1;
    if(number==osn) return 1;
    return log(number)/log(osn);
}   
logarithm::logarithm()
{
    osn=1;
    number=1;
    rez=0;
};
logarithm::logarithm(float OSN,float NUMBER)
{
    if(NUMBER==0)
        {
        cout<<"Íåëüçÿ ââîäèòü 0 Гў ГЄГ*Г·ГҐГ±ГІГўГҐ îñГ*îâГ*Г*ГЁГї. ГЋГ±Г*îâГ*Г*ГЁГҐ ГіГ±ГІГ*Г*îâëåГ*Г® Гў 1";
        number=1;
        }
    else
        number=NUMBER;
 
    if(OSN==0)
        {
        cout<<"Íåëüçÿ ââîäèòü 0 Гў ГЄГ*Г·ГҐГ±ГІГўГҐ Г·ГЁГ±Г«Г*. ×èñëî ГіГ±ГІГ*Г*îâëåГ*Г® Гў 1";
        osn=1;
        }
    else
        osn=OSN;
 
    rez=Calculate();
};
logarithm::logarithm(const logarithm &op1)
{
    osn=op1.osn; 
    number=op1.number;
    rez=op1.rez;
}
float logarithm::GetRezult()
{
    return rez;
};
void logarithm::SetOsn(float OSN)
{
    if(OSN==0)
    {
        cout<<" Íåëüçÿ ââîäèòü 0 Гў ГЄГ*Г·ГҐГ±ГІГўГҐ îñГ*îâГ*Г*ГЁГї. ГЋГ±Г*îâГ*Г*ГЁГҐ ГіГ±ГІГ*Г*îâëåГ*Г® Гў 1";
        osn=1;
    }
    else
        osn=OSN;
    rez=Calculate();
};      
void logarithm::SetNumber(float NUMBER)
{
    if(NUMBER==0)
    {
        cout<<" Íåëüçÿ ââîäèòü 0 Гў ГЄГ*Г·ГҐГ±ГІГўГҐ Г·ГЁГ±Г«Г*. ×èñëî ГіГ±ГІГ*Г*îâëåГ*Г® Гў 1";
        number=1;
    }
    else
        number=NUMBER;
    rez=Calculate();
};
float logarithm::operator +(logarithm &op1)
{   
    return rez+op1.GetRezult();
};
float logarithm::operator -(logarithm &op1)
{   
    return rez-op1.GetRezult();
};
float logarithm::operator *(logarithm &op1)
{   
    return rez*op1.GetRezult();
};
float logarithm::operator /(logarithm &op1)
{
    if(op1.GetRezult()!=0)
        return rez/op1.GetRezult();
    cout<<"!!!ÄåëåГ*ГЁГҐ_Г*Г*_0!!!"<<endl;
    return -1;
};
float logarithm::operator ^(float st)
{
    
    return pow(rez,st);
};
void logarithm::Print()
{
    cout<<"log"<<osn<<"_"<<number<<"="<<rez<<endl;      
};
float logarithm::GetOsn()
    {
        return osn;
    };
float logarithm::GetNumber()
    {
        return number;
    };
Добавлено через 5 минут
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include "dialog.h"
#include <iostream.h>
#include <fstream.h>
#include <string.h>
void dialog::WriteLog(int i)
    {
    ofstream stream("log",ios::app);    
        if(i==1)
{stream<<"Ââîä_ïåðâîãî_îïåðГ*òîðГ*: log"<<c.op1.GetOsn()<<"_" <<c.op1.GetNumber()<<"="<<c.op1.GetRezult()<<endl;
            };
        if(i==2)
{stream<<" Ââîä_ïåðâîãî_îïåðГ*òîðГ*: log"<<c.op2.GetOsn()<<'_'<<c.op2.GetNumber() <<"="<<c.op2.GetRezult()<<endl;
            };
        if(i==3)
            {
                if(c.GetOperation()=='^')
stream<<"Âûâîä_ðåçóëüòГ*ГІГ*:log"<<c.op1.GetOsn() <<'_'<<c.op1.GetNumber()
                <<c.GetOperation()<<c.GetSt()<<"="<<c.GetRezult()<<endl;
                else
stream<<"Âûâîä_ðåçóëüòГ*ГІГ*:log"<<c.op1.GetOsn()<<'_'<<c.op1.GetNumber()
                <<c.GetOperation()<<"log"<<c.op2.GetOsn()<<'_'<<c.op2.GetNumber()
                <<"="<<c.GetRezult()<<endl;
            };
        if(i==4)
            {
                stream<<"Âûáîð_îïåðГ*öèè:"<<c.GetOperation()<<endl;
                if(c.GetRezult()==-1)
                    stream<<"!!!ÄåëåГ*ГЁГҐ_Г*Г*_0!!!"<<endl;
            };
        if(i==41)
            {
                stream<<"Âûáîð_îïåðГ*öèè:ÍåäîïóñòèìГ*Гї îïåðГ*öèÿ"<<endl;
            };
        if(i==5)
            {
                stream<<"Ïåðåõîä_ГЄ_äðóãîìó_îñГ*îâГ*Г*ГЁГѕ:"<<c.op1.GetOsn()<<endl;
            };
    };
 
void dialog::ReadLog()
    {
        char s[50];
        ifstream stream("log");     
        while(stream>>s) 
            cout<<s<<endl;
    };
 
 
bool dialog::menu()
    {
        int pm;
        int OSN;
        char op;
        bool ok=false;
        cout<<"1: ГўГўГҐГ±ГІГЁ ïåðâûé îïåðГ*òîð"<<endl;
        cout<<"2: ïîêГ*Г§Г*ГІГј ïåðâûé îïåðГ*òîð "<<endl;
        cout<<"3: ГўГўГҐГ±ГІГЁ âòîðîé îïåðГ*òîð "<<endl;
        cout<<"4: ïîêГ*Г§Г*ГІГј âòîðîé îïåðГ*òîð "<<endl;
        cout<<"5: ГўГўГҐГ±ГІГЁ ГўГЁГ¤ îïåðГ*öèè"<<endl;
        cout<<"6: âûïîëГ*ГЁГІГј ïåðåõîä îïåðГ*òîðГ* 1 ГЄ Г§Г*Г¤Г*Г*Г*îìó îñГ*îâГ*Г*ГЁГѕ "<<endl;
        cout<<"7: âûâåñòè ðåçóëüòГ*ГІ îïåðГ*öèè"<<endl;
        cout<<"8: ïîêГ*Г§Г*ГІГј ëîã-ГґГ*éë"<<endl;
        cout<<"9: âûõîä"<<endl;
 
        while((pm>9)|(pm<1))
            cin>>pm;
        if(pm==1) {c.InputLog(1);WriteLog(1);return false;};
        if(pm==2) {c.op1.Print();return false;};
        if(pm==3) {c.InputLog(2);WriteLog(2);return false;};
        if(pm==4) {c.op2.Print();return false;};
        if(pm==5) 
            while(ok==false)
                {
                    cout<<"ââåäèòå îïåðГ*öèþ:"; 
                    cin>>op;
                    ok=c.SetOperation(op);
                    if(ok==true)WriteLog(4);
                    else WriteLog(41);
                    return false;
                };
        if(pm==6) 
            {
                cout<<"ââåäèòå îñГ*îâГ*Г*ГЁГҐ";
                cin>>OSN;
                c.ChangeOsn(OSN);
                WriteLog(5);
                return false;
            };
        if(pm==7) {c.Print();WriteLog(3);return false;};
        if(pm==8) {ReadLog();return false;};
        if(pm==9) {return true;};
 
    };
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2011, 14:41
Привет! Вот еще темы с ответами:

Собрать double не по формуле - C++
Есть два знакового числа типа int64_t: порядок и мантисса, причём, точка перенесена за младший разряд мантиссы, оба числа знаковые без...

собрать программу. окружение графа. - C++
в течении двух недель нужно написать курсовую, помогите пожалуйста. Задание: Граф задаётся своей матрицей смежности, вывести на экран...

Как собрать установочный файл? - C++
Я написал программу, но хочу сделать так, чтобы она устанавливалась. Как это сделать?

Как собрать проект из исходников - C++
Добрый день. У меня есть проект, точнее 3 файла. Main.cpp #include &quot;func.h&quot; int main() { //Тут вызов процедур из func ...


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

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

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