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

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

Войти
Регистрация
Восстановить пароль
 
george32451
0 / 0 / 0
Регистрация: 30.07.2014
Сообщений: 3
#1

Простой консольный конвертер валют - проверить корректность реализации - C++

30.07.2014, 16:53. Просмотров 1128. Ответов 14
Метки нет (Все метки)

Всем привет! Я новичок на вашем форуме, как и в C++. Изучаю его третий день. Вот решил подкрепить свои знания и написать простенький конвертер валют. Думаю, что я его еще буду усовершенствовать, а пока гляньте на мой код. (Наверно, я совсем быдлокодер) Код получился через чур длинным, как по мне. Вот и решил спросить совета у знающих людей.
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
#include <iostream>
using namespace std;
 
void usd_rub();
void usd_eur();
void rub_usd();
void rub_eur();
void eur_usd();
void eur_rub();
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int choice; 
    //Выбираем валюту
    do{
        cout << "1. USD -> RUB\n";
        cout << "2. USD -> EUR\n";
        cout << "3. RUB -> USD \n";
        cout << "4. RUB -> EUR\n";
        cout << "5. EUR -> USD\n";
        cout << "6. EUR -> RUB\n" << "\n";
        cout << "7. Выйти из программы.\n\n";
        do {
            cout << "Выберите, что делать: \n\n";
            cin >> choice;
            //Проверяем, не ввел ли пользователь не верные значения. 
            if (choice<1 || choice>7) cout << "Вы ввели не верное значение. Пожалуйства, введите верное значение (от 1 до 6)\n\n";
        } while (choice<1 || choice >7); //Выполняется эта часть кода, пока пользователь не введет верное значение
        //Инструкция выбора
        switch (choice){
        case 1:
            usd_rub();
            break;
        case 2:
            usd_eur();
            break;
        case 3:
            rub_usd();
            break;
        case 4:
            rub_eur();
            break;
        case 5:
            eur_usd();
            break;
        case 6:
            eur_rub();
            break;
        case 7:
            cout << "До свиданья!";
            break;
        }
        //Выполнять программу, пока пользователь не введет число 7 с клавиатуры
    } while (choice != 7);
    return 0;
}
//Функция перевода долларов в рубли
void usd_rub(){
    double rub, usd;
    int choice;
 
    cout << "\nВведите количество долларов: \n\n";
    cin >> usd;
        
    rub = usd * 35.6339;
    cout << "\n" << usd << " доллара это " << rub << " рублей\n\n";
    //Проверка, хочет ли пользователь продолжить работу программы или нет
    cout << "Хотите ли вы выйти из программы? \n";
    cout << "0. Да \n";
    cout << "1. Нет \n";
    cin >> choice;
    switch (choice){
    case 0:
        cout << "До свиданья!\n";
        //Другого способа выхода из программы не нашел:)
        exit(0);
    case 1:
        cout << "\n";
    }
 
}
//Функция перевода долларов в евро
void usd_eur(){
    double eur, usd;
    int choice;
    cout << "\nВведите количество долларов: \n\n";
    cin >> usd;
 
    eur = usd / 1.3402;
    cout << "\n" << usd << " доллара это " << eur << " евро\n\n";
 
    cout << "Хотите ли вы выйти из программы? \n";
    cout << "0. Да \n";
    cout << "1. Нет \n";
    cin >> choice;
    switch (choice){
    case 0:
        cout << "До свиданья!\n";
        exit(0);
    case 1:
        cout << "\n";
    }
}
//Функция перевода рублей в доллары
void rub_usd(){
    double rub, usd;
    int choice;
 
    cout << "\nВведите количество рублей: \n\n";
    cin >> rub;
 
    usd = rub / 35.6339;
    cout << "\n" << rub << " рубль это " << usd << " доллара\n\n";
 
    cout << "Хотите ли вы выйти из программы? \n";
    cout << "0. Да \n";
    cout << "1. Нет \n";
    cin >> choice;
    switch (choice){
    case 0:
        cout << "До свиданья!\n";
        exit(0);
    case 1:
        cout << "\n";
    }
}
//Функция перевода рублей в евро
void rub_eur(){
    double rub, eur;
    int choice;
 
    cout << "\nВведите количество рублей: \n\n";
    cin >> rub;
 
    eur = rub / 47.8635;
    cout << "\n" << rub << " рубль это " << eur << " евро\n\n";
 
    cout << "Хотите ли вы выйти из программы? \n";
    cout << "0. Да \n";
    cout << "1. Нет \n";
    cin >> choice;
    switch (choice){
    case 0:
        cout << "До свиданья!\n";
        exit(0);
    case 1:
        cout << "\n";
    }
}
//Функция перевода евро в доллары
void eur_usd(){
    double eur, usd;
    int choice;
 
    cout << "\nВведите количество евро: \n\n";
    cin >> eur;
 
    usd = eur * 1.3402;
    cout << "\n" << eur << " евро это " << usd << " доллара\n\n";
 
    cout << "Хотите ли вы выйти из программы? \n";
    cout << "0. Да \n";
    cout << "1. Нет \n";
    cin >> choice;
    switch (choice){
    case 0:
        cout << "До свиданья!\n";
        exit(0);
    case 1:
        cout << "\n";
    }
}
//Функция перевода евро в рубли
void eur_rub(){
    double rub, eur;
    int choice;
 
    cout << "\nВведите количество евро: \n\n";
    cin >> eur;
 
    rub = eur * 47.8635;
    cout << "\n" << eur << " евро это " << rub << " рубля\n";
 
    cout << "Хотите ли вы выйти из программы? \n";
    cout << "0. Да \n";
    cout << "1. Нет \n";
    cin >> choice;
    switch (choice){
    case 0:
        cout << "До свиданья!\n";
        exit(0);
    case 1:
        cout << "\n";
    }
}
Добавлено через 31 минуту
UPD: Не много сократил код созданием функции exit(). Как-то сразу не додумался.
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#include <iostream>
using namespace std;
 
void exit();
void usd_rub();
void usd_eur();
void rub_usd();
void rub_eur();
void eur_usd();
void eur_rub();
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int choice; 
    //Выбираем валюту
    do{
        cout << "1. USD -> RUB\n";
        cout << "2. USD -> EUR\n";
        cout << "3. RUB -> USD \n";
        cout << "4. RUB -> EUR\n";
        cout << "5. EUR -> USD\n";
        cout << "6. EUR -> RUB\n" << "\n";
        cout << "7. Выйти из программы.\n\n";
        do {
            cout << "Выберите, что делать: \n\n";
            cin >> choice;
            //Проверяем, не ввел ли пользователь не верные значения. 
            if (choice<1 || choice>7) cout << "Вы ввели не верное значение. Пожалуйства, введите верное значение (от 1 до 6)\n\n";
        } while (choice<1 || choice >7); //Выполняется эта часть кода, пока пользователь не введет верное значение
        //Инструкция выбора
        switch (choice){
        case 1:
            usd_rub();
            break;
        case 2:
            usd_eur();
            break;
        case 3:
            rub_usd();
            break;
        case 4:
            rub_eur();
            break;
        case 5:
            eur_usd();
            break;
        case 6:
            eur_rub();
            break;
        case 7:
            cout << "До свиданья!";
            break;
        }
        //Выполнять программу, пока пользователь не введет число 7 с клавиатуры
    } while (choice != 7);
    return 0;
}
// Функция выхода из функций конвертирования. Тавтология, простите))
void exit(){
    int choice;
 
    //Проверка, хочет ли пользователь продолжить работу программы или нет
    cout << "Хотите ли вы выйти из программы? \n";
    cout << "0. Да \n";
    cout << "1. Нет \n";
    cin >> choice;
    switch (choice){
    case 0:
        cout << "До свиданья!\n";
        //Другого способа выхода из программы не нашел:)
        exit(0);
    case 1:
        cout << "\n";
    }
 
}
 
//Функция перевода долларов в рубли
void usd_rub(){
    double rub, usd;
 
    cout << "\nВведите количество долларов: \n\n";
    cin >> usd;
        
    rub = usd * 35.6339;
    cout << "\n" << usd << " доллара это " << rub << " рублей\n\n";
    
    exit();
}
 
 
//Функция перевода долларов в евро
void usd_eur(){
    double eur, usd;
 
    cout << "\nВведите количество долларов: \n\n";
    cin >> usd;
 
    eur = usd / 1.3402;
    cout << "\n" << usd << " доллара это " << eur << " евро\n\n";
 
    exit();
    
}
//Функция перевода рублей в доллары
void rub_usd(){
    double rub, usd;
 
    cout << "\nВведите количество рублей: \n\n";
    cin >> rub;
 
    usd = rub / 35.6339;
    cout << "\n" << rub << " рубль это " << usd << " доллара\n\n";
 
    exit();
 
}
//Функция перевода рублей в евро
void rub_eur(){
    double rub, eur;
 
    cout << "\nВведите количество рублей: \n\n";
    cin >> rub;
 
    eur = rub / 47.8635;
    cout << "\n" << rub << " рубль это " << eur << " евро\n\n";
 
    exit();
}
//Функция перевода евро в доллары
void eur_usd(){
    double eur, usd;
 
    cout << "\nВведите количество евро: \n\n";
    cin >> eur;
 
    usd = eur * 1.3402;
    cout << "\n" << eur << " евро это " << usd << " доллара\n\n";
 
    exit();
}
//Функция перевода евро в рубли
void eur_rub(){
    double rub, eur;
 
    cout << "\nВведите количество евро: \n\n";
    cin >> eur;
 
    rub = eur * 47.8635;
    cout << "\n" << eur << " евро это " << rub << " рубля\n";
 
    exit();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2014, 16:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Простой консольный конвертер валют - проверить корректность реализации (C++):

Проверить корректность реализации нескольких задач - C++
Добрый вечер всем. Вопрос относиться к опытным программистам С++. Вопрос такой. Я хотел устроится на вакансию Junior Developer C++, ...

Метод хорд - проверить корректность реализации кода - C++
Приветствую, форумчане. Хочу обратиться к вам за помощью, вот еле написала программу для метода хорд, методом шары если честно, так как...

Конвертер валют - C++
1.Напишите программу “Конвертер валют”. Программа должна позволять пересчитывать сумму, выраженную в одной из денежных единиц (гривны,...

Конвертер валют (реализация) - C++
Вообщем вот, лазил по всяким темам и всевозможным форумам, нашел подходящий код, переделал немного под себя (но еще не полностью, курс...

Конвертер валют. Не выводится ответ - C++
// 5.cpp: определяет точку входа для консольного приложения. #include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;windows.h&quot; ...

Простой консольный калькулятор - C++
Я новичок, изучаю C++ всего первый день, начал изучение по книге Либерти &quot;C++ за 21 день&quot;. Пока что из всех полученных мною знаний я...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
krv
73 / 53 / 11
Регистрация: 10.07.2014
Сообщений: 328
30.07.2014, 17:15 #2
1. магические цифры - плохо. Надо хотя бы константы, а лучше читать откудато курсы валют. для простоты - из файла.
2. заставлять вводить человека цифры - плохо. А вдруг он введет букву? лучше самому контроль сделать.

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

Это для начала.
0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
30.07.2014, 17:41 #3
Много дублирования кода.
Функции перевода валют написаны по одному шаблону - следовательно, можно обобщить. Перевод есть функция от двух аргументов - значение в исходной валюте и коэффициент перевода в целевую.
george32451
0 / 0 / 0
Регистрация: 30.07.2014
Сообщений: 3
30.07.2014, 17:48  [ТС] #4
krv, 0x10, спасибо за советы. На счет последнего не много не догоняю. Как обобщить функции перевода валют? И, если можно, приведите пример кода, пожалуйста
Справлюсь
23 / 23 / 5
Регистрация: 24.07.2014
Сообщений: 203
30.07.2014, 18:23 #5
george32451, вы массивы уже изучали?
george32451
0 / 0 / 0
Регистрация: 30.07.2014
Сообщений: 3
04.08.2014, 14:45  [ТС] #6
Справлюсь, к сожалению, нет. В общем все заключается в изучении массивов, понял.
orange_fox
34 / 34 / 6
Регистрация: 06.04.2014
Сообщений: 189
04.08.2014, 20:26 #7
C++
1
2
3
4
5
6
7
cout << "1. USD -> RUB\n";
        cout << "2. USD -> EUR\n";
        cout << "3. RUB -> USD \n";
        cout << "4. RUB -> EUR\n";
        cout << "5. EUR -> USD\n";
        cout << "6. EUR -> RUB\n" << "\n";
        cout << "7. Выйти из программы.\n\n";
Можно не писать cout постоянно:

C++
1
2
3
4
5
6
7
cout << "1. USD -> RUB\n"
        << "2. USD -> EUR\n"
        << "3. RUB -> USD \n"
        << "4. RUB -> EUR\n"
        << "5. EUR -> USD\n"
        << "6. EUR -> RUB\n" << "\n"
        << "7. Выйти из программы.\n\n"
gru74ik
Модератор
Эксперт CЭксперт С++
4150 / 1776 / 197
Регистрация: 20.02.2013
Сообщений: 4,898
Записей в блоге: 21
04.08.2014, 22:30 #8
Цитата Сообщение от orange_fox Посмотреть сообщение
Можно не писать cout постоянно
Более того, можно и оператор << не писать постоянно
C++
1
2
3
4
5
6
7
cout << "1. USD -> RUB\n"
        "2. USD -> EUR\n"
        "3. RUB -> USD\n"
        "4. RUB -> EUR\n"
        "5. EUR -> USD\n"
        "6. EUR -> RUB\n\n"
        "7. Выйти из программы.\n\n";
rikimaru2013
C++ Game Dev
2429 / 1123 / 240
Регистрация: 30.11.2013
Сообщений: 3,673
04.08.2014, 22:53 #9
george32451, если еще актуально скажу где как оптимизировать еще код.
gru74ik
Модератор
Эксперт CЭксперт С++
4150 / 1776 / 197
Регистрация: 20.02.2013
Сообщений: 4,898
Записей в блоге: 21
05.08.2014, 14:08 #10
Вывод списка валют так покрасивше будет:
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
/// Разъяснение терминов и сокращений:
    //  EUR - евро
    //  GBP - британские фунты
    //  JPY - японские йены
    //  RUB - российский рубль
    //  USD - американский доллар
    //  forex (foreign exchange) - иностранная валюта
    //  qty (quantity) - количество
    //  row - строка
    //  col (column) - колонка (столбец)
    //  index - порядковый номер
 
#include <iostream>
#include <windows.h>
#include <string>
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    const int qty=5;  // количество валют
 
    string forex[qty]={"EUR", "GBP", "JPY", "RUB", "USD"};
    int index=1;
    for (int i=0; i<qty; ++i)
        for (int j=0; j<qty; ++j)
        {
            if (forex[i].compare(forex[j]))
            {
                if (index<10)
                {
                    cout << " " << index << ". " << forex[i]
                         << " -> " << forex[j] << endl;
                    ++index;
                }
                else
                {
                    cout << " " << index << ". " << forex[i]
                         << " -> " << forex[j] << endl;
                    ++index;
                }
            }
        }
                
    return 0;
}
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
05.08.2014, 14:10 #11
gru74ik, Не проще-ли?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <vector>
 
int main()
{
   const std::vector<std::string> forex = {"EUR", "GPB", "JPY", "RUB", "USD"};
   int index = 1;
   for (const auto& s : forex)
   {
      for (const auto& e : forex)
      {
         if (e == s) continue;
         std::cout << (index < 10 ? " " : "") << index << ". " << s << " -> " << e << std::endl;
         ++index;
      }
   }
}
gru74ik
Модератор
Эксперт CЭксперт С++
4150 / 1776 / 197
Регистрация: 20.02.2013
Сообщений: 4,898
Записей в блоге: 21
05.08.2014, 14:13 #12
Цитата Сообщение от ForEveR Посмотреть сообщение
Не проще-ли?
Очень красиво у Вас получилось
Благодарю!
orange_fox
34 / 34 / 6
Регистрация: 06.04.2014
Сообщений: 189
05.08.2014, 15:51 #13
ForEveR, Забыли
C++
1
#include <string>
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
05.08.2014, 16:07 #14
orange_fox, Не то, чтобы забыл. У меня скомпилировалось. Но вцелом да, спасибо за замечание.
Справлюсь
23 / 23 / 5
Регистрация: 24.07.2014
Сообщений: 203
05.08.2014, 23:32 #15
george32451, когда изучите массивы вот что бы я вам посоветовал:
1.запрос про перевод из одной валюты в другую осуществлять двумя числами(первая из какой,вторая в какую)
2.создать массив кофициентов перевода из рублей в другие валюты так чтобы индекс элемента соответствовал номеру валюты
3.расчёт результата осуществлять можно так tsena/k[valuta1]*k[valuta2]
хотя тут можно по разному решить
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2014, 23:32
Привет! Вот еще темы с ответами:

Простой консольный калькулятор - не пойму, где ошибка - C++
#include &lt;stdio.h&gt; int main() { float num1,num2,res,moreCalc; char operation; ...

Написаить простой консольный редактор текстовых файлов - C++
Нужно написаить простой консольный редактор текстовых файлов. В каую сторону копать? Желательно кросплатформенный. Ну или под Windows.

Как написать простой конвертер из wav в mp3 - C++
Здравствуйте! Ребят, я в С++ прохо эрудирован, но мне нужено написать простенький конвертер из wav в mp3. Подскажите с чего начать и как...

Проверить код на корректность - C++
Сделал лабу, все работает отлично.... Но я не уверен что она написана нормально, может где то переменная не там обявляется или не так...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.08.2014, 23:32
Ответ Создать тему
Опции темы

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