Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

simasim avatar simasim 5 Точки

7. List Manipulation Advanced

Здравейте, бих била много благодарна, ако някой види защо в тази задача във вижуъл студио всичко излиза, както е по условието, а в джъдж ми дава 50 точки.

Става дума за последната задача от лаба за листове.

Ето кода:

https://pastebin.com/88YRTw7K?fbclid=IwAR2wHdBRPusrybwTy5hgxe9DNvtf08uG7C0eaiMgkWafRoaYAcWn1e_BeKU

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

7. List Manipulation Advanced
Next, we are going to implement more complicated list commands, extending the previous task. Again, read a list
and keep reading commands until you receive "end":
Contains {number} – check if the list contains the number and if so - print "Yes", otherwise print "No such number".
PrintEven – print all the even numbers, separated by a space.
PrintOdd – print all the odd numbers, separated by a space.
GetSum – print the sum of all the numbers.
Filter {condition} {number} – print all the numbers that fulfill the given condition. The condition will be either '<',
'>', ">=", "<=".
After the end command, print the list only if you have made some changes to the original list. Changes are made
only from the commands from the previous task.

Тагове:
0
Programming Fundamentals
krasimir_naydenoff avatar krasimir_naydenoff 1 Точки

Изпращам едно по-различно решение на задачата.

Методите съм си ги търсил сам в интернет, не съм си измислял мои.

https://pastebin.com/ipEit2Jm

100/100

0
nikoleta.panayotova avatar nikoleta.panayotova 2 Точки

Ето и моето предложение 100/100. 
Като стил винаги предпочитам да огранича четенето от конзолата с while, също switch вместо if-else, когато има възможност. Използвам тернарния оператор също, за да си спестявам if-else.
Спестявам и изолзването на променливи, 

По-късно забелязах, че може и четните и нечетни да се съкратят с 
IEnumerable<int> oddNumbers = numbers.Where(n => n % 2 != 0);

https://pastebin.com/ipEit2Jm

...

List<int> numbers = Console.ReadLine().Split().Select(int.Parse).ToList();

string input = Console.ReadLine();
bool isChanged = false;

while (input != "end")
{
    string[] tokens = input.Split();

    switch (tokens[0])
    {

        case "Add": numbers.Add(int.Parse(tokens[1])); 
            isChanged = true; 
            break;
        case "Remove": 
            numbers.Remove(int.Parse(tokens[1]));
            isChanged = true;
            break;
        case "RemoveAt": 
            numbers.RemoveAt(int.Parse(tokens[1])); 
            isChanged = true;
            break;
        case "Insert":
            int index = int.Parse(tokens[1]);
            int number = int.Parse(tokens[2]);
            numbers.Insert(number, index); 
            isChanged = true;
            break;
        case "Contains": 
            bool contains = numbers.Contains(int.Parse(tokens[1]));
            Console.WriteLine(contains ? "Yes" : "No such number");
            break;
        case "PrintEven":
            IEnumerable<int> evenNumbers = numbers.Where(n => n % 2 == 0);
            Console.WriteLine(string.Join(" ", evenNumbers));
            break;
        case "PrintOdd":
            IEnumerable<int> oddNumbers = numbers.Where(n => n % 2 != 0);
            Console.WriteLine(string.Join(" ", oddNumbers));
            break;
        case "GetSum":
            int sum = numbers.Sum();
            Console.WriteLine($"{sum}");
            break;
        case "Filter":
            string condition = tokens[1];
            number = int.Parse(tokens[2]);

            List<int> result = new List<int>();
            switch (condition)
                {
                case "<": result = numbers.Where(n => n < number).ToList();
                    break;
                case ">":
                    result = numbers.Where(n => n > number).ToList();
                    break;
                case "<=":
                    result = numbers.Where(n => n <= number).ToList();
                    break;
                case ">=":
                    result = numbers.Where(n => n >= number).ToList();
                    break;
            }
            Console.WriteLine(string.Join(" ", result));

            break;

    }

    input = Console.ReadLine();
}

if (isChanged)
    Console.WriteLine(string.Join(" ", numbers));
 

0
14/02/2024 16:16:33
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.