Почему программа не работает? Почему код пропускает функцию?

Я не давно начал заниматься 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 шт):

Автор решения: St_rt_la

И так! поехали) 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);
        }
    }
}

и оно сработало))))))

→ Ссылка