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

Оптимизация программы - C++

Восстановить пароль Регистрация
 
Nklok
 Аватар для Nklok
0 / 0 / 0
Регистрация: 23.06.2013
Сообщений: 22
29.06.2013, 17:47     Оптимизация программы #1
Ув. обыватели,
Вчера написал "Калькулятор", но так как я ещё зеленый в программировании на С++, прошу вас показать как и где можно оптимизировать нижеизложенный код.
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
#include <iostream>
using namespace std;
 
double add();
double sub();
double mult();
double div();
 
int main()
{
    char select;
    double a,b,c;
 
    cout<<"\t\t\t\tSelect operation\n";
    cout<<"1. Addition (+)\n";
    cout<<"2. Subtraction (-)\n";
    cout<<"3. Multiplication (*)\n";
    cout<<"4. Division (/)\n";
    cout<<"I choose: "; select = getchar();
 
    start:
    switch(select)
    {       
    case '1':
        cout<<"ADDITION (+)\n";
        add();
        break;
        case '2':
        cout<<"SUBTRACTION (-)\n";
        sub();
        break;
        case '3':
        cout<<"MULTIPLICATION (*)\n";
        mult();
        break;
    case '4':
        cout<<"DIVISION (/)\n";
        div();
        break;
    default:
        cout<<"Please, make a selection!";
    }
 
    cout<<endl;
    goto start;
    return 0;
}
 
double add()
{
    double a,b,c;
    cout<<"Enter 1st number: "; cin>>a;
    cout<<"Enter 2nd number: "; cin>>b;
    c = a + b;
    cout<<"\t\t\t\t"<<a<<" + "<<b<<" = "<<c;
    return 0;
}
double sub()
{
    double a,b,c;
    cout<<"Enter 1st number: "; cin>>a;
    cout<<"Enter 2nd number: "; cin>>b;
    c = a - b;
    cout<<a<<" - "<<b<<" = "<<c;
    return 0;
}
 
double mult()
{
    double a,b,c;
    cout<<"Enter 1st number: "; cin>>a;
    cout<<"Enter 2nd number: "; cin>>b;
    c = a * b;
    cout<<a<<" * "<<b<<" = "<<c;
    return 0;
}
 
double div()
{
    double a,b,c;
    cout<<"Enter 1st number: "; cin>>a;
    cout<<"Enter 1st number: "; cin>>b;
    c = a / b;
    cout<<a<<" / "<<b<<" = "<<c;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2013, 17:47     Оптимизация программы
Посмотрите здесь:

C++ Оптимизация кода программы
C++ Оптимизация программы на С++
Оптимизация простой программы C++
Оптимизация программы C++
Оптимизация программы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
el_gato_de_Ch
35 / 35 / 1
Регистрация: 28.04.2013
Сообщений: 110
29.06.2013, 17:48     Оптимизация программы #2
что вы понимаете под оптимизацией ? по какому критерию она должна проходить ? по времени работы ?
Nklok
 Аватар для Nklok
0 / 0 / 0
Регистрация: 23.06.2013
Сообщений: 22
29.06.2013, 17:51  [ТС]     Оптимизация программы #3
Цитата Сообщение от el_gato_de_Ch Посмотреть сообщение
что вы понимаете под оптимизацией ? по какому критерию она должна проходить ? по времени работы ?
Быстродействие, уменьшение кол-ва кода, если возможно.
Так же я мог допустить ошибки в написании
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
29.06.2013, 17:56     Оптимизация программы #4
Ну вынесите ввод значений в отдельную функцию, чтобы меньше копипасты было... Тут три строчки кода, говорить особо не о чем.
el_gato_de_Ch
35 / 35 / 1
Регистрация: 28.04.2013
Сообщений: 110
29.06.2013, 17:59     Оптимизация программы #5
1. Зачем в main нужны a,b,c ?
2. В процедуре div() дублируется cout
3. Ни в одной процедуре не нужна переменная с, просто cout << a + b; (это уже оптимизация =) )
4. Избавьтесь от goto и не пользуйтесь им впредь. Если хотите что бы прога зациклилась и предлагала пользователю повтор операции, можно воспользоваться do {} while();

Добавлено через 1 минуту
если хотите действительно, крутой и кошерный калькулятор =) попробуйте изучить обратную польскую запись вот это будет действительно круто.
Yandex
Объявления
29.06.2013, 17:59     Оптимизация программы
Ответ Создать тему
Опции темы

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