S
S
stuffed_pretzel2020-05-29 18:27:55
C++ / C#
stuffed_pretzel, 2020-05-29 18:27:55

Where is the error in checking c Split('-')?

When checking the group index, there should be 3 or 4 letters before the dash and 3 digits after (Example: zit-101)
But when you enter zit101 or 101zit in the terminal, it says what is correct. Where is the mistake?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _3
{
    class Program
    {

        static void Main(string[] args)
        {
            string index;
            Console.Write("Введите индекс группы: ");
            index = Console.ReadLine();

            bool valid = true; //полагаем, что индекс является группой
            var parts = index.Split('-'); //разделяем на части по тире
            if (parts.Length == 2) //если получили две части
            {
                //разбор первой части
                string p1 = parts[0];
                if (p1.Length == 3 || (p1.Length == 4 && Char.IsLetter(p1[3]))) //трехсимвольная часть, либо 4-символьная
                {
                    //должно быть 3 больших буквы
                    for (int i = 0; i < 3; i++)
                    {
                        if (!Char.IsLetter(p1[i]))
                        {
                            valid = false;
                            break;
                        }
                    }
                }
                else
                {
                    valid = false;
                }
                //если первая часть подходит, проверяем вторую
                if (valid)
                {
                    string p2 = parts[1];
                    if (p2.Length == 3) //трехсимвольная часть
                    {
                        //должно быть 3 цифры
                        for (int i = 0; i < 3; i++)
                        {
                            if (!Char.IsDigit(p2[i]))
                            {
                                valid = false;
                                break;
                            }
                        }
                        //проверка первой цифыр 1..5
                        if (valid)
                        {
                            int a = int.Parse(p2[0].ToString());
                            if (a < 1 || a > 5)
                            {
                                valid = false;
                            }
                        }

                    }
                }
            }

            if (valid)
            {
                Console.WriteLine("Введен корректный индекс группы");
            }
            else
            {
                Console.WriteLine("Строка не является индексом группы");
            }

            Console.ReadKey();
        }
    }
}


5ed129e8e337b628481376.jpeg

Answer the question

In order to leave comments, you need to log in

1 answer(s)
F
freeExec, 2020-05-29
@stuffed_pretzel

if (parts.Length == 2)
{}
else valid = false;

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question