Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
6 / 6 / 3
Регистрация: 29.12.2016
Сообщений: 132
1

Как правильно организовать ветвление в программе? (if / else if)

08.01.2017, 02:15. Показов 1824. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброгл времени суток. Есть вопрос - почему если я ввожу нужный мне параметр мне всплывает на экран
"Введите значение средств в гривнях для перевода в доллары: " ?? Буду благодарен за ответ
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
 #include <iostream>
using namespace std;
int main()
{
double UAH;
double CNY;
double RUB;
double USD;
    string uah = "UAH";
    string cny = "CNY";
    string rub = "RUB";
    cout << "Введите, какую валюту переводить в доллары(UAH, CNY, RUB): ";
    if(cin >> uah)
    {
cout << "Введите значение средств в гривнях для перевода в доллары: ";
     cin >> UAH;
     USD = UAH * 0.0370;
     cout << UAH << " UAH = " << USD << " USD." << endl;   
    }
    else if(cin >> cny)
    {
cout << "Введите значение средств в юанях для перевода в доллары: ";
     cin >> CNY;
     USD = CNY * 0.1445;
     cout << CNY << " CNY = " << USD << " USD." << endl;
    }
    else if(cin >> rub)
    {
     cout << "Введите значение средств в рублях для перевода в доллары: ";
     cin >> RUB;
     USD = RUB * 0.0167;
     cout << RUB << " RUB = " << USD << " USD." << endl;
    }
    
 
return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.01.2017, 02:15
Ответы с готовыми решениями:

Как правильно организовать код для точки и функции "CЕ" в программе-калькуляторе?
Вообщем, надо доделать калькулятор, я не могу понять как правильно организовать код для точки и...

Как правильно сделать ветвление в зависимости от ОС?
Мне нужно сделать не что вроде #ifdef OS_WIN // Код для винды для MSVC #elif ...

Как правильно использовать ветвление Switch?
Доброго времени суток. Вот код программы: switch (x.ToLower()) { ...

почему не работает ветвление в программе на Pascal?
программа по идее должна искать, есть ли в массиве два рядом стоящих противоположных элемента......

10
2 / 2 / 1
Регистрация: 31.12.2016
Сообщений: 73
08.01.2017, 02:30 2
Я так понимаю что вы хотите применить оператор switch ? Используйте enum и case и все получится)
0
6 / 6 / 3
Регистрация: 29.12.2016
Сообщений: 132
08.01.2017, 02:38  [ТС] 3
Нет нет, тут дело вот в чем: при вводе вида валюты дальше идет в ход одно из 3 решений(if, if else, if else), но проблема в том что что бы я не ввел("RUB"(рублей), "CNY"(юаней) или "UAH"(гривен)), он мне всеравно выдает 1 из 3 пунктов, тоесть про гривны

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 cout << "Введите, какую валюту переводить в доллары(UAH, CNY, RUB): ";
    if(cin >> uah)
    {
cout << "Введите значение средств в гривнях для перевода в доллары: ";
     cin >> UAH;
     USD = UAH * 0.0370;
     cout << UAH << " UAH = " << USD << " USD." << endl;   
    }
    else if(cin >> cny)
    {
cout << "Введите значение средств в юанях для перевода в доллары: ";
     cin >> CNY;
     USD = CNY * 0.1445;
     cout << CNY << " CNY = " << USD << " USD." << endl;
    }
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
08.01.2017, 02:44 4
Лучший ответ Сообщение было отмечено mskoromets как решение

Решение

Цитата Сообщение от mskoromets Посмотреть сообщение
Есть вопрос - почему если я ввожу нужный мне параметр мне всплывает на экран
"Введите значение средств в гривнях для перевода в доллары: " ??
Как написал, так и всплывает.

Добавлено через 3 минуты
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
    double UAH;
    double CNY;
    double RUB;
    double USD;
    string uah = "UAH";
    string cny = "CNY";
    string rub = "RUB";
    cout << "Введите, какую валюту переводить в доллары(UAH, CNY, RUB): ";
    string choice;
    cin >> choice;
    if(choice == uah)
    {
         cout << "Введите значение средств в гривнях для перевода в доллары: ";
         cin >> UAH;
         USD = UAH * 0.0370;
         cout << UAH << " UAH = " << USD << " USD." << endl;   
    }
    else if(choice == cny)
    {
         cout << "Введите значение средств в юанях для перевода в доллары: ";
         cin >> CNY;
         USD = CNY * 0.1445;
         cout << CNY << " CNY = " << USD << " USD." << endl;
    }
    else if(choice == rub)
    {
         cout << "Введите значение средств в рублях для перевода в доллары: ";
         cin >> RUB;
         USD = RUB * 0.0167;
         cout << RUB << " RUB = " << USD << " USD." << endl;
    }
1
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
08.01.2017, 02:45 5
потому что cin >> uah возвращает cin, т.е. объект класса istream, а не строку, которую он записал в uah
1
6 / 6 / 3
Регистрация: 29.12.2016
Сообщений: 132
08.01.2017, 02:50  [ТС] 6
Благодарю! Помогло Я тут как раз нашел способ решения этой проблемы через функцию getline(), вот чать кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
     getline(cin, val);
    if(val == uah)
    {
cout << "Введите значение средств в гривнях для перевода в доллары: ";
     cin >> UAH;
     USD = UAH * 0.0370;
     cout << UAH << " UAH = " << USD << " USD." << endl;   
    }
    else if(val == cny)
    {
cout << "Введите значение средств в юанях для перевода в доллары: ";
     cin >> CNY;
     USD = CNY * 0.1445;
     cout << CNY << " CNY = " << USD << " USD." << endl;
    }
    else if(val == rub)
    {
     cout << "Введите значение средств в рублях для перевода в доллары: ";
     cin >> RUB;
     USD = RUB * 0.0167;
     cout << RUB << " RUB = " << USD << " USD." << endl;
    }
Хотелось бы знать, в чем разница между вашим решением и этим?
( val обозначил как string val
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
08.01.2017, 02:52 7
Так на всякий, cin >> uah - это не какая-то особая конструкция языка, это перегруженная операция, которая эквивалентна вызову cin.operator>>
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
 
int main() {
    int a;
    //cin >> a;
    cin.operator>>(a);
    if(a == 5)
        cout << "a = 5";
    else 
        cout << "a != 5";
    
    return 0;
}
запустите код выше, чтоб посмотреть, что он работает.
1
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
08.01.2017, 02:55 8
Цитата Сообщение от mskoromets Посмотреть сообщение
Хотелось бы знать, в чем разница между вашим решением и этим?
По сути, разницы нет. getline() обычно используется там, где в строках есть пробелы. Если же таковых нет, то можно использовать оператор >>.
1
6 / 6 / 3
Регистрация: 29.12.2016
Сообщений: 132
08.01.2017, 03:10  [ТС] 9
Спасибо большое

Добавлено через 11 минут
Представленный вами код работает, но я решил применить его в своей программе и он отказался там работать, почему?
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
 cout << "Введите, какую валюту переводить в доллары(UAH, CNY, RUB): ";
    cin.operator>>(a);
    if(a == uah)
    {
cout << "Введите значение средств в гривнях для перевода в доллары: ";
     cin >> UAH;
     USD = UAH * 0.0370;
     cout << UAH << " UAH = " << USD << " USD." << endl;   
    }
    else if(a == cny)
    {
cout << "Введите значение средств в юанях для перевода в доллары: ";
     cin >> CNY;
     USD = CNY * 0.1445;
     cout << CNY << " CNY = " << USD << " USD." << endl;
    }
    else if(a == rub)
    {
     cout << "Введите значение средств в рублях для перевода в доллары: ";
     cin >> RUB;
     USD = RUB * 0.0167;
     cout << RUB << " RUB = " << USD << " USD." << endl;
    }
    
 
 
 
return 0;
}
DevAlone
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
08.01.2017, 04:13 10
Цитата Сообщение от mskoromets Посмотреть сообщение
и он отказался там работать, почему?
Если код не компилируется, то не нужно писать "не работает". Так и нужно писать: "не компилируется". Не работает, это когда собранный .exe запускается, и что-то не то, что ожидалось, происходит.
Цитата Сообщение от mskoromets Посмотреть сообщение
C++
1
cin.operator>>(a);
В классе istream нет оператора >> перегруженного под std::string: http://www.cplusplus.com/refer... tor%3E%3E/
Но такой оператор перегружен для string в глобальной области:
http://www.cplusplus.com/refer... tor%3E%3E/
C++
1
std::operator>>(std::cin, a);
Но лучше, то же самое, так написать:
C++
1
cin >> a;
Цитата Сообщение от nd2 Посмотреть сообщение
C++
1
2
string choice; 
cin >> choice;
1
6 / 6 / 3
Регистрация: 29.12.2016
Сообщений: 132
08.01.2017, 04:16  [ТС] 11
Спасибо
0
08.01.2017, 04:16
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.01.2017, 04:16
Помогаю со студенческими работами здесь

Не правильно работает ветвление
Есть такой код &lt;?php $f = fopen(&quot;1.txt&quot;, &quot;r&quot;); $q = fgets ($f); if ($q =='1'){ ...

Как организовать авторизацию в программе
Дамы и Господа предлагаю обсудить одну маленькую но очень важную деталь. Это запароленый вход в...

Как правильно организовать?
У меня есть несколько классов и у них практически одинаковые функции, которые отличается парой...

Как правильно организовать БД?
Извините за глупый, наверное, вопрос. Я самоучка и только начинаю познавать науку... Как...

Как правильно организовать БД?
Есть база данных о предприятии. В ней есть данные об отделах и о сотрудниках. С сотрудниками всё...

Не правильно работает ветвление в массиве чисел
Вот есть задачка: Типо вводим 10 чисел в массив, и далее все числа которые не кратны 3 складываем ....


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Как работать с ветками (branch) в Git
InfoMaster 17.01.2025
Система контроля версий Git произвела революцию в процессе разработки программного обеспечения, предоставив разработчикам мощный инструмент для управления изменениями в коде. Одной из наиболее важных. . .
Как откатить последние коммиты в Git
InfoMaster 17.01.2025
Система контроля версий Git стала неотъемлемой частью современной разработки программного обеспечения, предоставляя разработчикам мощные инструменты для управления изменениями в коде. Одним из. . .
Что такое boilerplate и scaffold, чем они отличаются
InfoMaster 17.01.2025
В современном мире разработки программного обеспечения эффективность и скорость создания качественного кода играют crucial роль в успехе проектов. Разработчики постоянно ищут способы оптимизировать. . .
Чем отличаются ссылки и указатели в С++
InfoMaster 17.01.2025
В современном программировании на C++ эффективная работа с памятью является ключевым аспектом разработки качественного программного обеспечения. Указатели и ссылки представляют собой два. . .
В чем разница между PUT и POST
InfoMaster 17.01.2025
В современной веб-разработке правильное использование HTTP-методов играет ключевую роль в создании надежных и эффективных API-интерфейсов. Протокол HTTP прошел долгий путь развития с момента своего. . .
DTO, POCO и Value Object: что это такое, когда и как использовать
InfoMaster 17.01.2025
Введение в паттерны передачи данных В современной разработке программного обеспечения эффективное управление данными и их передача между различными слоями приложения являются ключевыми аспектами. . .
Что такое pull request в Git
InfoMaster 17.01.2025
В современной разработке программного обеспечения pull request в Git представляет собой ключевой механизм для эффективного взаимодействия между разработчиками при работе над общим кодом проекта. По. . .
Как вернуться к предыдущему коммиту в Git
InfoMaster 17.01.2025
Система контроля версий Git представляет собой мощный инструмент для управления изменениями в программном коде, который позволяет разработчикам эффективно отслеживать и контролировать историю. . .
Что такое паттерны программировани­я и проектирования
InfoMaster 17.01.2025
Роль паттернов в современной разработке программного обеспечения В современном мире разработки программного обеспечения паттерны проектирования стали неотъемлемой частью профессионального подхода. . .
Как добавить конструктор Яндекс Карт на сайт
InfoMaster 17.01.2025
Введение в API Яндекс Карт В современной веб-разработке интеграция картографических сервисов стала неотъемлемой частью многих проектов. API Яндекс Карт представляет собой мощный инструмент для. . .
Что такое javascript:void­­(0) и зачем это нужно
InfoMaster 17.01.2025
Когда вы сталкиваетесь с веб-разработкой, особенно с использованием JavaScript, одной из директив, которая часто встречается, является javascript:void(0). Это выражение вызывает интерес из-за своей. . .
Что такое оркестрация и хореография микросервисов
InfoMaster 17.01.2025
Введение в оркестрацию и хореографию микросервисов В современном мире разработки программного обеспечения микросервисная архитектура стала ключевым подходом к созданию масштабируемых и гибких. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru