Помогите найти ошибку калькулятора

Всем привет я новичок в c++ но идей много.Одним словом... я хотел создать калькулятор к которому открывается доступ при вводе правильного пароля. Только я думал будет легко а вот оказалось что нет.Вот код:

#include <iostream>
#include <string>
#include <clocale>

using namespace std;
string check_pass (string password);

{
setlocale(LC_CTYPE, "rus");
string valid_pass = "1234";
string error_message;
if (password == valid_pass) {
    error_message = "Доступ разрешен.";
} else {
    error_message = "неверный пароль!";
}
 }
   int main()
 {
setlocale(LC_CTYPE, "rus");
string user_pass;
cout << "Введите пароль: ";
getline (cin, user_pass);
string error_msg = check_pass (user_pass);
cout << error_msg << endl;
double num;
if (password==valid_pass) {

int a, b, d

 cout << "Введите первое число!" << endl;

cin >> a;

 cout << "Введите второе число!" << endl;

 cin >> b;

 int c = a - b;
  cout << "Ровно =" << c << endl;
  cout << " Введите ответ чтобы прибавить!" << endl;
  cin >> num;
  cout << " Введите еще один номер!" << endl;
  cin >> d;
  int  e = num + d;
  cout << " И ответ........=" << e << endl;}

return 0;
}

Поправил код.

(1) Вместо setlocale() здесь лучше использовать пару функций для корректной работы с кириллицей. Подробности см. в статье «Символы кириллицы в консоли Windows».

(2) Действия, относящиеся к паролю, лучше собрать в одной функции, а не размазывать по всей программе.

(3) В калькуляторе для чисел лучше использовать тип double, а не int. Во избежание «странных» результатов при делении.

(4) Твою «логику» работы калькулятора оставил as-is ))

#include <iostream>
#include <string>
#include <Windows.h>

using namespace std;

const string valid_pass = "1234";

bool check_pass(string valid_password) {

    string user_pass;

    cout << "Введите пароль: ";
    getline(cin, user_pass);

    if (user_pass == valid_password) {
        cout << "Доступ разрешен." << endl;
        return true;
    }
    else {
        cout << "неверный пароль!" << endl;
        return false;
    }
}

int main() {

    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);

    if (check_pass(valid_pass)) {

        double a, b, c, d, e, num;

        cout << "Введите первое число!" << endl;
        cin >> a;

        cout << "Введите второе число!" << endl;
        cin >> b;

        c = a - b;
        cout << "Ровно =" << c << endl;
        cout << " Введите ответ чтобы прибавить!" << endl;
        cin >> num;
        cout << " Введите еще один номер!" << endl;
        cin >> d;
        e = num + d;
        cout << " И ответ........=" << e << endl;
    }

    return 0;
}

Ой большое спасибо!!! не знал для чего нужен тип данных bool но теперь походу понял, вместо setlocale() да думал использовать то что вы написали в код, вопрос: для чего нужен #include <windows.h>? А и еще думал тоже как-то соединить код пароля вместе но вот... как-то не додумался всё таки так сделать. Спасибо!

«Для чего нужен тип данных bool» и множество других полезных вещей написано в книгах. Рекомендую.

#include <windows.h> — это директива включения заголовочного файла. В данном случае он нужен для объявлений функций SetConsoleOutputCP() и SetConsoleCP().

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.