Почему программа не работает? Почему код пропускает функцию?
Я не давно начал заниматься c++ и хочу сделать что то на подобии помощника для себя. Мне нужно вывести если выбрать калькулятор в переменной а, но код заканчивает свою работу. Вроде сам код калькулятор в порядке, но он игнорирует функцию, когда пишу "калькулятор". Ошибки не возникает, просто код после выбора что я хочу сделать в программе, сразу заканчивает работу пропустив функцию.
#include<iostream>
using namespace std;
int main()
{
cout << "Приветствую! Пажалуйста, скажите ваше имя." << endl;
string name;
cin >> name;
cout << name << " что бы начать работу программы,напишите нужную вам команду. Узнать можно прописав \"помощь\"" << endl;
string a;
cin >> a;
if (a == "помощь" || a == "help" || a == "п") {
cout << "Существующие команды: калькулятор." << endl;
if (a == "калькулятор") {
cout << "Введите: 1 число << знак действия << 2 число. (При делении делимое не должно быть нулëм.)" << endl;
int b, s;
string d;
cin >> b >> d >> s;
void kalkylator(int b, int s, string d);
}
}
}
Если что после include есть <iostream>, но он не хочет отображаться. Вот код функции если что:
#include<iostream>
using namespace std;
void kalkylator(int b, int s, string d) {
if (d == "+"s){
cout << "В примере "s << b << " + "s << s << " равно: "s << b + s;
}else if (d == "-"s){
cout << "В примере "s << b << " - "s << s << " равно: "s << b - s;
}else if (d == "*"s){
cout << "В примере "s << b << " * "s << s << " равно: "s << b * s;
}else if (d == "/"s){
if (b == 0){
cout << "Пажалуйста, при делении не делайте делимое нулëм."s << endl;
}else{
cout << "В примере "s << b << " / "s << s << " равно: "s << b / s;
}
}else{
cout << "Не возможно посчитать, не правильно записан пример. Пажалуйста ознакомьтесь с инструкцией в начале."s << endl;
}
}
И можете подсказать, почему при вставлении кода приходится самому пропускать строки, он сливается в 1 текст.
Ответы (1 шт):
И так! поехали) 1 - научи программу понимать русский текст, тот что вводишь...
#include <Windows.h> и
int main() {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
....
тут в условии он как будто бы ожидал латиницу))) и 'help' работает даже у тебя... а русскую кириллицу не понимал...увы и ах =(( Да и на будущее в плюсах я бы рекомендовал использовать не std::string а std::wstring, который вместо char использует wchar_t (wide char типа, который отменно работает не только с ASCII но и с другими кодировками)... но это мой совет, чисто сердечное пожелание...
2 - у тебя нет ввода текста после cout << "Существующие команды: калькулятор." << endl; .... там явно очередного std::cin>>a; не хватает))))
3 - void kalkylator(int b, int s, string d); точно не вызов функции))) больше похоже на объявление функции)))) тут лучше сработает именно вызов - kalkylator(b, s, d);.....
итого у меня получилось следующее:
#include<iostream>
using namespace std;
#include <Windows.h>
void kalkylator(int b, int s, string d) {
if (d == "+"s) {
cout << "В примере "s << b << " + "s << s << " равно: "s << b + s;
}
else if (d == "-"s) {
cout << "В примере "s << b << " - "s << s << " равно: "s << b - s;
}
else if (d == "*"s) {
cout << "В примере "s << b << " * "s << s << " равно: "s << b * s;
}
else if (d == "/"s) {
if (b == 0) {
cout << "Пажалуйста, при делении не делайте делимое нулëм."s << endl;
}
else {
cout << "В примере "s << b << " / "s << s << " равно: "s << b / s;
}
}
else {
cout << "Не возможно посчитать, не правильно записан пример. Пажалуйста ознакомьтесь с инструкцией в начале."s << endl;
}
}
int main() {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
cout << "Приветствую! Пажалуйста, скажите ваше имя." << endl;
string name;
cin >> name;
cout << name << " что бы начать работу программы,напишите нужную вам команду. Узнать можно прописав \"помощь\"" << endl;
string a;
cin >> a;
if (a == "помощь" || a == "help" || a == "п") {
cout << "Существующие команды: калькулятор." << endl;
cin >> a;
if (a == "калькулятор") {
cout << "Введите: 1 число << знак действия << 2 число. (При делении делимое не должно быть нулëм.)" << endl;
int b, s;
string d;
cin >> b >> d >> s;
kalkylator(b, s, d);
}
}
}
и оно сработало))))))