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
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки
Best Answer

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. - това не виждам да го правиш никъде в кода ти.

1
20/02/2019 09:32:36
simasim avatar simasim 5 Точки

Благодаря!

0
Jordan471 avatar Jordan471 1 Точки

https://pastebin.pl/view/ac675a21

Това е моето решение, 100/100
Доста интересна задачка като цяло :D поблъсках си главата за последните 10 точки 1-2 часа...

1
ver4eto avatar ver4eto 23 Точки

Трябва да добавиш решението и от предишната задача.И само ако извършваш промени по Лист-а, т.е. ако имаш командите от предишната задача, да принтираш тогава отново Лист-а.

1
simasim avatar simasim 5 Точки

Благодаря!

0
LachzarNinkov avatar LachzarNinkov 3 Точки

Здравейте моля за малко помощ получавам 80/100  https://pastebin.com/CsvzpFbh

Благодаря предварително

0
anton_fotev avatar anton_fotev 9 Точки

На същата задача ми дава 80/100

някой може ли да помогне
 

using System;
using System.Collections.Generic;
using System.Linq;
                    
public class Program
{
    public static void Main()
    {
        List<int> myList = Console.ReadLine()
            .Split()
            .Select(int.Parse)
            .ToList();
        
        string inputPrim = "";
        
        int counterMyListCount = myList.Count;
        int counterOfPreviosTask = 0;
        
        while ((inputPrim = Console.ReadLine()) != "end")
        {
          string[] input = inputPrim
              .Split()
              .ToArray();
            
            string command = input[0];
            
            if (command == "Add")
            {
              counterOfPreviosTask++;    
                
              int currentDidgit = int.Parse(input[1].ToString());    
                
              myList.Add(currentDidgit);        
            }
            else if (command == "Remove")
            {
             counterOfPreviosTask++;
                
             int currentDidgit = int.Parse(input[1].ToString());         
                
             myList.Remove(currentDidgit);    
            }
            else if (command == "RemoveAt")
            {
              counterOfPreviosTask++;    
                
             int currentIndex = int.Parse(input[1].ToString());         
                
             myList.RemoveAt(currentIndex);    
            }
            else if (command == "Insert")
            {
             counterOfPreviosTask++;
                    
              int currentDidgit = int.Parse(input[1].ToString());
                
              int currentIndex = int.Parse(input[2].ToString());
                
              myList.Insert(currentIndex, currentDidgit);    
            }
            if (command == "Contains")
            {
              int currentDidgit = int.Parse(input[1]);    
                
              if (myList.Contains(currentDidgit))
              {
                Console.WriteLine("Yes");  
              }
                else
                {
                  Console.WriteLine("No such number");
                }            
            } // end command == Contains
            
            else if (command == "PrintEven")
            {
              List<int> secondList = myList
                  .Where(x => x % 2 == 0)
                  .ToList();
                  
              Console.WriteLine(string.Join(" ", secondList));     
            } // end PrintEven
            
            
            else if (command == "PrintOdd")
            {
              List<int> secondList = myList
                  .Where(x => x % 2 == 1)
                  .ToList();
                  
              Console.WriteLine(string.Join(" ", secondList));     
            } // end PrintOdd
            
            else if (command == "GetSum")
            {
             int currentDidgit = myList.Sum();         
                
             Console.WriteLine("{0}", currentDidgit);
            } // end GetSum
            
            
            else if (command == "Filter")
            {            
             int curretValue = int.Parse(input[2]);
                
             List<int> secondList = new List<int>();
                
             if (input[1] == ">=")
               {
                 Console.WriteLine(string.Join(" ", myList.Where(x => x >= curretValue)));                 
                }
              else if (input[1] == ">")
                {
                 Console.WriteLine(string.Join(" ", myList.Where(x => x > curretValue)));    
                }
               else    if (input[1] == "<=")
               {     
                  Console.WriteLine(string.Join(" ", myList.Where(x => x <= curretValue)));             
                }
              else if (input[1] == "<")
                {
                 Console.WriteLine(string.Join(" ", myList.Where(x => x < curretValue)));    
                }            
            } // end Filter            
        } // end While
        
        if (counterOfPreviosTask > 0 && counterMyListCount != myList.Count) 
        {
            Console.WriteLine(string.Join(" ", myList));
        }

        
 

0
koknq avatar koknq 24 Точки

using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp26
{
    class Program
    {
        static void Main(string[] args)
        {
            List<int> numbers = Console.ReadLine()
                            .Split(' ')
                            .Select(int.Parse)
                            .ToList();
            bool change = false;
            while (true)
            {
                string command = Console.ReadLine();
                if (command == "end")
                {
                    break;
                }
                string[] tokens = command.Split(' ');
                switch (tokens[0])
                {
                    case "Add":
                        int number = int.Parse(tokens[1]);
                        numbers.Add(number);  change = true; break;
                    case "Remove":
                        int number1 = int.Parse(tokens[1]);
                        numbers.Remove(number1);  change = true; break;
                    case "RemoveAt":
                        int number2 = int.Parse(tokens[1]);
                        numbers.RemoveAt(number2);  change = true; break;
                    case "Insert":
                        int number3 = int.Parse(tokens[1]);
                        int number4 = int.Parse(tokens[2]);
                        numbers.Insert(number4, number3);  change = true; break;
                    case "Contains":
                        int numberC = int.Parse(tokens[1]);
                        if (numbers.Contains(numberC))
                        {
                            Console.WriteLine("Yes");
                        }
                        else
                        {
                            Console.WriteLine("No such number");
                        }
                        break;
                    case "PrintEven":
                        List<int> even = new List<int>();
                        for (int i = 0; i < numbers.Count; i++)
                        {
                            if (numbers[i] % 2 == 0)
                            {
                                even.Add(numbers[i]);
                            }
                        }
                        Console.WriteLine(string.Join(" ", even));
                        break;
                    case "PrintOdd":
                        List<int> odd = new List<int>();
                        for (int i = 0; i < numbers.Count; i++)
                        {
                            if (numbers[i] % 2 != 0)
                            {
                                odd.Add(numbers[i]);
                            }
                        }
                        Console.WriteLine(string.Join(" ", odd));
                        break;
                    case "GetSum":
                        int sum = 0;
                        for (int i = 0; i < numbers.Count; i++)
                        {
                            sum += numbers[i];
                        }
                        Console.WriteLine(sum);
                        break;
                    case "Filter":
                        string sign = tokens[1]; int numberF = int.Parse(tokens[2]);
                        if (sign == ">")
                        {
                            List<int> nov = new List<int>();
                            for (int i = 0; i < numbers.Count; i++)
                            {
                                if (numbers[i] > numberF)
                                {
                                    nov.Add(numbers[i]);
                                }
                            }
                            Console.WriteLine(String.Join(" ", nov));
                        }
                        else if (sign == "<")
                        {
                            List<int> nov = new List<int>();
                            for (int i = 0; i < numbers.Count; i++)
                            {
                                if (numbers[i] < numberF)
                                {
                                    nov.Add(numbers[i]);
                                }
                            }
                            Console.WriteLine(String.Join(" ", nov));
                        }
                        else if (sign == "<=")
                        {
                            List<int> nov = new List<int>();
                            for (int i = 0; i < numbers.Count; i++)
                            {
                                if (numbers[i] <= numberF)
                                {
                                    nov.Add(numbers[i]);
                                }
                            }
                            Console.WriteLine(String.Join(" ", nov));
                        }
                        else if (sign == ">=")
                        {
                            List<int> nov = new List<int>();
                            for (int i = 0; i < numbers.Count; i++)
                            {
                                if (numbers[i] >= numberF)
                                {
                                    nov.Add(numbers[i]);
                                }
                            }
                            Console.WriteLine(String.Join(" ", nov));
                        }
                        break;

                }
            }
            if (change == true)
            {
                Console.WriteLine(string.Join(" ", numbers));
            }
        }
    }
}

100/100 judge :D

0
bobby24 avatar bobby24 2 Точки

Някой ще ми погледне ли кода, моля.

https://pastebin.com/v9BJgSBR

Дава ми 90/100 и грешка на 5-я тест в Judge - Test #5 (Runtime error). Моят код е по-прост - без да създавам нови списъци.

0
20/10/2021 16:23:15
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
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.