Конечный автомат - C# (182657)

Узнай цену своей работы

Формулировка задачи:

Всем привет, дан код:
class Program
    {
        static void Main()
        {
            int nums = 0, letters = 0;
            Console.WriteLine("Введите строку : ");
            string s = Console.ReadLine();
            Console.WriteLine("длина : {0}", s.Length);
            foreach (char c in s)
            {
                if (c != ' ')
                {
                    if (c >= '0' && c <= '9') 
                    nums++;
 
                    else 
                    letters++;
                }
            }
            Console.WriteLine("кол-во букв : {0}", letters);
            Console.WriteLine("кол-во цифр : {0}", nums);
            if (nums > 3 && letters > 2 && s.Length > 10) 
            Console.WriteLine("Строка прошла проверку!");
            else 
            Console.WriteLine("Строка не прошла проверку!");
            Console.ReadKey();
        }
    }
нужно описать конечный автомат для этой программы, кто может, помогите.

Решение задачи: «Конечный автомат»

textual
Листинг программы
    public class Program
    {
        enum State { begin, error_digit, error_letter, error_length, end };
 
        public static void Main(string[] args)
        {
            State state = State.begin;
 
            string input = "";
            List<string> errors = new List<string>();
 
            while (input != "EXIT")
            {   
                switch (state)
                {
                    case State.begin:
                        Console.WriteLine("Enter string for validation:");
                        input = Console.ReadLine();
                        if (input.Count(ch => Char.IsDigit(ch)) < 3)
                        {
                            state = State.error_digit;
                        }
                        else if (input.Count(ch => Char.IsLetter(ch)) < 2)
                        {
                            state = State.error_letter;
                        }
                        else if (input.Length < 10)
                        {
                            state = State.error_length;
                        }
                        else
                        {
                            state = State.end;
                        }
                        break;
                    case State.error_digit:
                        errors.Add("Меньше 3-х цифр");
                        if (input.Count(ch => Char.IsLetter(ch)) < 2)
                        {
                            state = State.error_letter;
                        }
                        else if (input.Length < 10)
                        {
                            state = State.error_length;
                        }
                        else
                        {
                            state = State.end;
                        }
                        break;
                    case State.error_letter:
                        errors.Add("Меньше 2-х букв");
                        if (input.Length < 10)
                        {
                            state = State.error_length;
                        }
                        else
                        {
                            state = State.end;
                        }
                        break;
                    case State.error_length:
                        errors.Add("Меньше 10 символов");
                        state = State.end;
                        break;
                    case State.end:
                        errors.ForEach(error => Console.WriteLine(error));
                        Console.WriteLine();
                        errors.Clear();
                        state = State.begin;
                        break;
                }
            }
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5