Я пытаюсь проверить программу на запись пользователя в символах с помощью пароля «prog». У пользователя три попытки получить правильный пароль. Однако он часто дает ответ «правильный пароль», хотя он не соответствует.Программа для проверки ввода пользователем пароля (в символах) не дает правильных результатов, C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication10
{
class Program
{
static void Main(string[] args)
{
int tries = 0;
bool valid = false;
bool p, r, o, g;
char userInput;
int characters;
while (tries < 3 && valid == false)
{
Console.WriteLine("Please enter password:");
p = r = o = g = false;
characters = 0;
while (characters < 4)
{
userInput = Console.ReadKey().KeyChar;
if (userInput == 'p' || userInput == 'P') p = true;
else if (userInput == 'r' || userInput == 'R') r = true;
else if (userInput == 'o' || userInput == 'O') o = true;
else if (userInput == 'g' || userInput == 'G') g = true;
characters++;
}
if (p == r == o == g == true)
{
valid = true;
}
tries++;
}
if (valid == true)
{
Console.WriteLine("\nright password");
}
else Console.WriteLine("\nwrong password");
Console.ReadLine();
}
}
}
«Однако он часто дает ответ« правильный пароль », хотя он не соответствует». - Можете ли вы привести пример? Судя по коду, кажется, что любая комбинация «p», «r», «o» и «g» пройдет, потому что вы не проверяете порядок, в котором они входят, только если они существуют. – Quantic
@ zom4 вы пытаетесь увидеть, входят ли они во все слово prog или просто буквы –
Это всего лишь худший код проверки пароля, который я когда-либо видел –