Почему выполняется сразу все условие if/else C++?

#include "std_lib_facilities.h"
using namespace std;

int main()
{
    char registr;
    char login;
    char passlog;
    char a;
    char name, pass, pass1;
    char test;
    char test1;
    cout << "Если ты еще не зарегистрированный пользователь\nнапиши registr\nесли являешься участником то login: ";
    cin >> a;
    if (a == registr)
    {
        cout << "Придумай себе имя: ";
        cin >> name;
        cout << "Придумай себе пароль: ";
        cin >> pass;
        cout << "Подтвердите пароль: ";
        cin >> pass1;
        if (pass == pass1)
        {
            cout << "Cпасибо за регистрацию! Уважаемый " << name << "\nНадеюсь мы подружимся!\n";
        }
        else
        {
            cout << "Пароли не совпадают, проверьте правильность написания и повторите еще!";
            return pass1;
        }
        
    }
    else
    {
        cout << "С возвращением, напиши свой логин!: ";
        cin >> login;
        cout << "С возвращением, " << login << "напиши свой пароль!: ";
        cin >> passlog;
        if (login == test && passlog == test1)
        {
            cout << "Добро пожаловать домой " << login << "!\n";
        }
        else
        {
            cout << "Ошибка при вводе логина или пароля, повторите попытку заново!";
            return login;
        }
        
    }
keep_window_open();
return 0; 
}

Я новичек в С++ (дня 3 всего учу) написал САМ код, но при запуске сразу выполняется все тело конструкции if тоесть оно не спрашивает мол твой логин/пароль, я просто как в питоне все print-ует на экран просто. Как сделать так чтобы выводилось по очередно


Ответы (1 шт):

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

Язык Си типовый. У него регистрация переменной имеет вид тип символ [= значение];.

Как в питоне не знаю, но строка в Си обозначается кавычками "строка". А вы смешали переменные со строками. Это разные вещи.

Тип строки в Си++ это string, а не char.

Добавляете заголовки библиотеки для типа строка и потокового вывода на консоль:

# include <string>
# include <iostream>

Затем задаёте правильный тип строки , имя переменной и равно какому-нибудь значению.

int main()
{
  string  registr = "registr";
  string  login;
  string  passlog;
  string  a;
  string  name, pass, pass1;
  string  test = "test" ;
  string  test1 = "test1";

Функция main имеет возвращаемое значение с типом int. По-этому возвращать строку нельзя, а только целое число.

{
  cout << "Пароли не совпадают, проверьте правильность написания и повторите еще!";
        //return pass1; неправильно
        return  1;    
}
//...
{
        cout << "Ошибка при вводе логина или пароля, повторите попытку заново!";
        //return login; неправильно
        return  1 ;
    }
→ Ссылка