Это простой калькулятор. Код компилируется, но результат сложения, вычитания, умножения или деления чисел не выводится на экран. Я думаю что у меня неправильное сравнение строк в конструкции ветвления. Прошу правильно написать этот код.
#include
#include
#include
using namespace std;
int main()
{
setlocale(0, "");
int a, b, i;
std::string x[1];
for(i = 1; i <= 10; i++){
cout << "Введите первое число: ";
cin >> a;
cout << "Напишите словами математический знак: ";
std::cin >> x[0];
cout << "Введите второе число: ";
cin >> b;
if(x[0] == "плюс"){
cout << "Результат = " << a + b << endl;
}
else if(x[0] == "минус"){
cout << "Результат = " << a - b << endl;
}
else if(x[0] == "умножить"){
cout << "Результат = " << a * b << endl;
}
else if(x[0] == "разделить"){
cout << "Результат = " << a / b << endl;
}
system("pause");
}
return 0;
}
Другие языки программирования и технологии
Помогите найти ошибку в коде с++. Скорее всего ошибка в сравнении строк.
#include <iostream>
#include <string>
#include <cfloat>
using namespace std;
int main() {
setlocale(LC_ALL, "Russian");
cout << "Введите первое число: ";
double a;
cin >> a;
cout << "Напишите словом математический знак: ";
wstring sign;
wcin.imbue(locale(".866"));
wcin >> sign;
cout << "Введите второе число: ";
double b;
cin >> b;
double res = DBL_MIN;
wstring signs[] = { L"плюс", L"минус", L"умножить", L"разделить" };
if (sign == signs[0]) res = a + b;
else if (sign == signs[1]) res = a - b;
else if (sign == signs[2]) res = a * b;
else if (sign == signs[3])
if (0 == b) cout << "\aПопытка деления на ноль! \n";
else res = a / b;
else cout << "\a\aОшибка! \n";
if (res != DBL_MIN) cout << "Результат: " << res << endl;
cin.sync();
cin.get();
}
#include <string>
#include <cfloat>
using namespace std;
int main() {
setlocale(LC_ALL, "Russian");
cout << "Введите первое число: ";
double a;
cin >> a;
cout << "Напишите словом математический знак: ";
wstring sign;
wcin.imbue(locale(".866"));
wcin >> sign;
cout << "Введите второе число: ";
double b;
cin >> b;
double res = DBL_MIN;
wstring signs[] = { L"плюс", L"минус", L"умножить", L"разделить" };
if (sign == signs[0]) res = a + b;
else if (sign == signs[1]) res = a - b;
else if (sign == signs[2]) res = a * b;
else if (sign == signs[3])
if (0 == b) cout << "\aПопытка деления на ноль! \n";
else res = a / b;
else cout << "\a\aОшибка! \n";
if (res != DBL_MIN) cout << "Результат: " << res << endl;
cin.sync();
cin.get();
}
x[0] первый символ строки, как он может быть равен всей строке?
Давно уже советуют не связываться с локалью. Не тот уровень у вас, чтобы корректно работать с русским вводом. А вот char будет к месту.
Давно уже советуют не связываться с локалью. Не тот уровень у вас, чтобы корректно работать с русским вводом. А вот char будет к месту.
Виталий Карловский
Если я ничего не путаю, x[0] это первая переменная в массиве.
не x[0] == "плюс" а
if(strcmp(x[0],"плюс")==0)
{
//строки совподают
}
else
{
//строки не совподают
}
if(strcmp(x[0],"плюс")==0)
{
//строки совподают
}
else
{
//строки не совподают
}
Вводи не русский текст, а знак. По моему с этим косяк будет.
К тому-же я не вижу разницы между "сложить, плюс, прибавить и к примеру сложи". А программа видит. Плюс проблема русской кодировки.
К тому-же я не вижу разницы между "сложить, плюс, прибавить и к примеру сложи". А программа видит. Плюс проблема русской кодировки.
Похожие вопросы
- помогите найти ошибку в коде на Си
- Помогите найти ошибку в коде
- Помогите найти ошибку...Pascal (строки)
- Помогите найти ошибку в коде. делфи
- Помогите найти ошибки в коде (паскаль)
- Помогите найти ошибку Delphi легкая программка
- помогите найти ошибку в коде VBA exel !
- программирование C++. Помогите найти ошибку
- Помогите найти ошибку qbasic
- Помогите найти ошибку в задачи,Паскаль...