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

Stream of Letters

Здравейте.

Доста се затрудних , но реших тази задача 

"Поток от букви
Напишете програма, която прочита скрито съобщение в поредица от символи. Те се получават по един на ред до получаване на командата "End". Думите се образуват от буквите в реда на четенето им. Символите, които не са латински букви трябва да бъдат игнорирани. Думите скрити в потока са разделени от тайна команда от три букви – "c", "o" и "n". При първото получаване на една от тези букви, тя се маркира като срещната, но не се запазва в думата. При всяко следващо нейно срещане се записва нормално в думата. След като са налични и трите символа от командата, се печата думата и интервал " ". Започва се нова дума, която по същия начин чака тайната команда, за да бъде отпечатана."
Това ми е решението : https://pastebin.com/v0sZSPvs

Judge ми дава 100/100,но бих искал да попитам дали няма по лецен вариант и дали кодът "става".

Тагове:
0
Programming Basics with C#
Borislav_Vulkov avatar Borislav_Vulkov 54 Точки

Ето едно малко по - различно решение, но не мога да кажа, че е много по "елегантно" от това което ти си направил.
Програмата ти е ок :)

namespace StreamOfLetters
{
    using System;
    using System.Collections.Generic;

    public class StartUp
    {
        public static void Main()
        {
            var message = new List<char>();
            var currentWord = new List<char>();

            string input = string.Empty;

            bool letterCIsExist = false;
            bool letterOIsExist = false;
            bool letterNIsExist = false;

            while ((input = Console.ReadLine()) != "End")
            {
                char currentChar = input[0];

                if ((currentChar >= 'a' && currentChar <= 'z') || 
                    (currentChar >= 'A' && currentChar <= 'Z'))
                {
                    if (currentChar == 'c' && !letterCIsExist)
                    {
                        letterCIsExist = true;
                    }

                    else if (currentChar == 'o' && !letterOIsExist)
                    {
                        letterOIsExist = true;
                    }

                    else if (currentChar == 'n' && !letterNIsExist)
                    {
                        letterNIsExist = true;
                    }
                    else
                    {
                        currentWord.Add(currentChar);
                    }

                    if (letterCIsExist && letterOIsExist && letterNIsExist)
                    {
                        letterCIsExist = false;
                        letterOIsExist = false;
                        letterNIsExist = false;

                        foreach (var @char in currentWord)
                        {
                            message.Add(@char);
                        }

                        message.Add(' ');
                        currentWord.Clear();
                    }
                }
            }

            foreach (var @char in message)
            {
                Console.Write(@char);
            }
        }
    }
}
 

0
kabalsky avatar kabalsky 3 Точки

Благодаря.

0
k.durzhev avatar k.durzhev 2 Точки

Ето едно решение и от мен - тук.

0
kabalsky avatar kabalsky 3 Точки

Благодаря

0