Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 1
Регистрация: 04.02.2011
Сообщений: 30

Дописать функцию main

21.05.2011, 07:52. Показов 594. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите написать функцию main.

Вот содержимое файлов проекта:

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.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;};
 
    };
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();
};
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();
    };
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);
};
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.05.2011, 07:52
Ответы с готовыми решениями:

Дописать программу, добавив обработку параметров main
Всем привет!Задание звучит так)Помогите дописать, пожалуйстааа!Заранее благодарю В файле содержится некоторый текст. Напишите функцию,...

Что и почему дописать в int main() чтобы функция void вернула значение
Что и почему дописать в int main() чтобы функция void вернула значение? #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include...

Нахождение основных значений оформить через функцию RESHENIE(), ввод данных и вывод на печать через функцию MAIN()
а помогите теперь эту задачку #include &lt;iostream&gt; int main() { int last = 0, next = 1; long sum = 1; for(;...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.05.2011, 07:52
Помогаю со студенческими работами здесь

Как вызвать функцию из .h в main ?
Здравствуйте! Помогите решить проблему. У меня есть много маленьких подзадачек в виде функций, которые расписаны в файлах .h и .cpp....

Как функцию встроить в main?
есть функции называется c я хочу чтобы она была в основной функции то есть c(p, p) в этойточке я хочу чтобы она сама находалась а не...

Добавить функцию main() в код
Помогите дописать программу только функцию main() на C++ листинг проги #ifndef COMPLEX_H #define COMPLEX_H #include...

дописать функцию try – catch
Превышение допустимой температуры плафона. // Содержание файла Lamp.h // ------------------------------------------------...

Как вызвать функцию из функции main?
работаю в деве. предположим я создал проект, изначально в нем находится файл main.cpp. предположим я создал в нем еще один файл с именем...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru