Loading...
gogbog avatar gogbog 12 Точки

Проблем със задача 07. Population Counter от раздел Exercises: Dictionaries, Lambda and LINQ

Така ето го кодчето:

 

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

namespace _7.Population_Counter
{
    class Program
    {
        static void Main(string[] args)
        {
            var countries = new Dictionary<string, List<string>>();
            var cityData = new Dictionary<string, int>();
            var countryTotalPopulation = new Dictionary<string, int>();

            while (true)
            {
                var inputedInfo = Console.ReadLine()
                    .Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries)
                    .ToArray();

                if (inputedInfo[0] == "report")
                {
                    //call method or break your life your choise
                    break;
                }

                var city = inputedInfo[0];
                var country = inputedInfo[1];
                var cityPopulation = int.Parse(inputedInfo[2]);

                

                if (!countries.ContainsKey(country))
                {
                    countries.Add(country, new List<string>());
                }

                if (!cityData.ContainsKey(city))
                {
                    cityData.Add(city, 0);
                }

                if (!countryTotalPopulation.ContainsKey(country))
                {
                    countryTotalPopulation.Add(country, 0);
                }

                countryTotalPopulation[country] += cityPopulation; // total population of country
                countries[country].Add(city); //index country value city in list
                cityData[city] += cityPopulation; //index city value population
            }

            var countryTotalPopList = countryTotalPopulation.OrderByDescending(key => key.Value).ToList();
            


            foreach (var item in countryTotalPopList)
            {
                var country = item.Key;
                var countryPopulation = item.Value;

                Console.WriteLine($"{country} (total population: {countryPopulation})");
                var cityDataList = cityData.OrderByDescending(key => key.Value).ToList();

                foreach (var allCitiesCity in cityDataList)
                {
                    var citiesCity = allCitiesCity.Key;
                    foreach (var city in countries[country])
                    {
                        if (city == citiesCity)
                        {
                            Console.WriteLine($"=>{city}: {allCitiesCity.Value}");
                        }
                    }
                }
                
            }


        }
    }
}
 

Със примерните задачи се справих обаче judge-а ми дава 30/100 и не ми позволява да видя къде съм сгрешил. Ако някой може да ми помогне или да ми каже по-добър начин за решаването на тази задача ще му бъда благодарен :).
Тагове:
0
Fundamentals Module
kaloyannikov avatar kaloyannikov 531 Точки
Best Answer
  • The population count of each city will be an integer in the range [0 … 2 000 000 000].

2 000 000 000 + 2 000 000 000 минаваш int границата . 

И за толкова дълъг код ползвай pastebin или някой друг сайт за share-ване на code.

1
gogbog avatar gogbog 12 Точки

Мерси за съвета вече ще го използвам и точно това ми беше грешката. Благодаря :)

0
warglaivee avatar warglaivee 59 Точки

Здравей, аз тръгнах по по-кратно решение, което не успях да завърша и погледнах видеото https://youtu.be/Dxvb-gh8U8E?t=8036

Което би било доста полезно за изпита, защото ми се вижда по-просто(логично) и бързо(по-малко код)

https://github.com/Warglaive/TechModuleSeptember2017/blob/master/Dictionaries%2C%20Lambda%20and%20LINQ%20-%20Exercises/07.%20Population%20Counter/07.%20Population%20Counter.cs

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