Member 14943839 Ответов: 3

Если мой код правильный или нет


#include <iostream>
#include <string>
using namespace std;
int main()
{
	string user[2] = {"may","kj"};
	int pass[2] = { 686668,7977979 };
	string username;
	string x;
	int passeword;
	int y;
	string press;
	string delate;
//add user
	cout << "do you want to add username press ok or not press not " << endl;
	cin >> press;
	if (press == "ok")
	{
		cout << "enter new username: " << endl;
		cin >> username;
		user[2] = username;
		for (int i = 0; i <= 2; i++)
		{
			if (username == user[i])
			{
				cout << "username already exist" << endl;
			}
			else
			{ 
				cout << "enter the passeword : " << endl;
				cin >> passeword;
				pass[2] = passeword;
				cout << "username already added" << endl;
			}
			cout << user << endl << pass << endl;
		}
	}
	else
		//delate
	{
		cout << "do you want to delate any username press yes or not" << endl;
		cin >> delate;
		if (delate == "yes")
		{
			cout << "enter your username: " << endl;
			cin >> username;
			string sure;
			cout << "are you sure to delate this username" << endl;
			cin >> sure;
			if (sure == "yes")
			{
				cout << "the username already delate" << endl;
			}
			else
			{
				cout << "ok" << endl;
			}
		}
		else
		{
			cout << "username didn't delate" << endl;
		}
	}
//login
	string login;
	cout << "login press log or sigup press sign" << endl;
	cin >> login;
	if (login == "log")
	{
		cout << "enter your username" << endl;
		cin >> username;
		cout << "enter your passeword" << endl;
		cin >> passeword;
		for (int i = 0; i <= 2; i++)
		{
			for (int z = 0; z <= 2; z++)
			{
				if (username == user[i])
				{
					if (passeword == pass[z])
					{
						cout << "already login" << endl;
					}
					else
					{
						cout << "please enter passewor again" << endl;
						cin >> passeword;
					}
				}
				else
				{
					cout << "username not found please enter username again" << endl;
					cin >> username;
				}
			}
		}
	}
	else
	{
		cout << "enter new username: " << endl;
		cin >> username; 
		cout << "enter the passeword : " << endl;
		cin >> passeword;
		cout << "already sig in" << endl;
	}
 }


Что я уже пробовал:

найти лучшее решение
я новичок

3 Ответов

Рейтинг:
23

Patrice T

Цитата:
Если мой код правильный или нет

Нет, это не правильно.
	string user[2] = {"may","kj"}; // here you declare a fixed size array
	int pass[2] = { 686668,7977979 }; // here you declare a fixed size array
...
		cin >> username;
		user[2] = username; // you store data after the end of array without resizing
		                    // problem fixed size array can not be resized
		for (int i = 0; i <= 2; i++)
		{
			if (username == user[i]) // this will always match because you also test user[2]
			{
				cout << "username already exist" << endl;
			}
			else
			{ 
				cout << "enter the passeword : " << endl;
				cin >> passeword;
				pass[2] = passeword; // you store data after the end of array without resizing
				                     // problem fixed size array can not be resized
				cout << "username already added" << endl;
			}
			cout << user << endl << pass << endl;
		}
	}


CPallini

5.

Patrice T

Спасибо

Рейтинг:
2

OriginalGriff

Откуда нам знать?
Мы понятия не имеем, для чего предназначен ваш код, поэтому мы понятия не имеем, является ли то, что он делает, намеренным поведением или нет!

Предположим, я вручу вам черный ящик с выключателями и разноцветными лампочками и скажу: "это работает?"
Вы щелкаете выключателем, и загорается красный свет.
Ты врежешь еще раз, и машина разобьется на улице снаружи.
Неужели это сделал ящик? Так и должно было быть? Ты же не знаешь.

Мы находимся в том же положении с вашим кодом: у него есть много проблем, которые я могу видеть с моей позиции профессионала в отношении аспектов безопасности, но они, вероятно, не представляют для вас никакого интереса, если только ваше домашнее задание специально не требует даже слегка защищенной системы входа.

Даже если бы мы знали, тестирование и отладка-это часть вашей задачи, и очень важная. Так что запускайте его и делайте то, что вас просит домашнее задание: затем посмотрите, что произошло. Затем попробуйте еще раз, но дайте ему плохие значения. проверьте все, что вы можете придумать, и посмотрите, что произойдет. Некоторые из них будут такими, как вы хотите, но некоторые из них, вероятно, не будут - так что разбейте отладчик и начните смотреть на то, почему, а затем исправьте их: затем начните тестирование снова!


Рейтинг:
0

CPallini

Я настоятельно рекомендую вам использовать std::vector, вместо C-как массивы. Попробуйте, например:

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>

using namespace std;


struct User
{
  string name, pwd;
  bool loggedin;
};

void adduser( vector <User> & v );
void deluser( vector <User> & v );
void loguser( vector <User> & v );

int main()
{
  vector <User> v {{"may", "686668", false},{"kj", "7977979" , false}};

  char choice;
  do
  {
    cout << "insert '+' to add a user, '-' to delete a user, 'l' to login, 'q' to quit\n";
    cin >> choice;

    switch ( choice)
    {
    case '+':
      adduser(v);
      break;
    case '-':
      deluser(v);
      break;
    case 'l':
      loguser(v);
      break;
    }
  } while (choice != 'q');

  cout << "bye" << endl;
}
void adduser( vector <User> & v)
{
  string name;
  cout << "please enter the new user name\n";
  cin >> name;
  auto it_found = find_if(v.begin(), v.end(), [ & name ] (auto u) { return u.name == name; } );
  if (it_found != v.end() )
  {
    cout << "this user name is already present\n";
    return;
  }
  string pwd;
  cout << "plaese enter the password for this user\n";
  cin >> pwd;
  v.emplace_back(User{ name, pwd, false } );
}

void deluser( vector <User> & v)
{
  cout << "implementation left as exercise\n";
}
void loguser( vector <User> & v)
{
  cout << "implementation left as exercise\n";
}


Patrice T

+5

CPallini

Спасибо!