Конечный автомат - 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; } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д