Софтуерно Инженерство
Loading...
+ Нов въпрос
simasim avatar simasim 5 Точки

Как split-ва, когато имаме два различни разделителя, които се подават - в единия случай "-", а в другия - ":"?

Здравейте, някой знае ли как се пише лист или масив, когато от конзолата има вероятност да му подадат два различни стринга?

В единия случай ще е List<string> text = Console.ReadLine().Split("-").ToList()м

В другия ще е List<string> text = Console.ReadLine().Split(":").ToList();

Как да се изпише листът, за да идентифицира програмата кой от двата типа чете?

Ето и условието:

Your task is to take every game and add it with its price. The games may have DLCs (downloadable content), which you should also add. The games will be given in the following format "{game}-{price}". The game names will contain only letters, digits and spaces. The DLCs will be given in the following format "{game}:{DLC}". All the of the inputs will be divided by ", ". You should only add the DLC if the game already exists. The DLC increases the game price by 20%.

After you have processed all the games you should lower the prices of all the games by 20% if they don't have a DLC and by 50% if they do. After this you should print the games with DLCs, ordered ascending by price, and then all the games without DLCs, ordered descending by price, in the following format:

  • If the game has a DLC:

    • "{game} - {DLC} - {price}"

  • If the game doesn't have a DLC:

    • "{game} - {price}"

The prices should be formatted to the second decimal place.

Тагове:
0
Programming Fundamentals 09/03/2019 13:54:08
knoteva avatar knoteva 519 Точки

Здравей,

 

Split(new Char[] { '-', ':' }

0
simasim avatar simasim 5 Точки

Да, това го бях направила, просто не знам как да го напиша, когато се получава после от конзолата - как да разбера кой вид лист ми подава.

0
knoteva avatar knoteva 519 Точки

Мога да видя задачата по-подробно утре, но това, което ми хрумва е че първо може да проверяваш дали се съдържа : или - и тогава да сплитваш или след като сплитнеш да провериш дали резултатът е инт.

0
simasim avatar simasim 5 Точки

С text.Contains('-') не става, не знам как да проверявам, това точно питах. Ако знаеш как, ще съм ти благодарна.

0
MArnaudov07 avatar MArnaudov07 12 Точки

Здравей! По условието на задачата като input получаваш string, който съдържа или игра с цена, или игра с DLC, разделени със ", ".(Например: "{game}-{price}, {game}-{price}, {game}:{DLC}...") Така че първата ти подзадача е да сплитнеш input-а по ", ".

 

string[] input = Console.ReadLine().Replace(", ", ",").Split(',');

 

След като направиш това въртиш един foreach цикъл върху input и правиш проверки дали имаш игра с цена или игра с DLC. Проверката можеш да я направиш най-лесно като използваш RegEx.

 

Примерен код:

            Regex gamePricePattern = new Regex(@"[\w\d\s]+\-[\w\d\s\.]+");
            Regex gameDlcPattern = new Regex(@"[\w\d\s]+\:[\w\d\s]+");

            foreach (string str in input)
            {
                if (gamePricePattern.IsMatch(str))
                {
                    string[] game = str.Split('-'); // game[0] ще ти е името на  играта, а game[1] цената.
                }
                if (gameDlcPattern.IsMatch(str))
                {
                    string[] game = str.Split(':');  // game[0] ще ти е името на играта, а game[1] DLC-то.

                }
            }

 

Ако нещо не ти е ясно питай. :)

0
10/03/2019 14:36:09