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

C# Associative arrays- exercise 9. ForceBook

Здравейте колеги, джъжд ми дава 70/100,отделих няколко часа в тестове но не можах да ги докарам до100, ако може да ми погледнете кода и кажете къде се чупи.

 

задча- https://pastebin.com/a2qaTiAi

условие- https://pastebin.com/KqK2LnmH

0
Fundamentals Module
ChallengerBBS avatar ChallengerBBS 15 Точки
Best Answer

https://pastebin.com/hhvbwAir

Ето твоята задача, редактирана от мен, едната елементарна грешка ти беше при OrderBy, трябва да е ThenBy иначе се губи смисъла на първият OrderByDescending. Надявам се да си откриеш другите пропуски, и аз си поиграх с тази задача. 

0
anton_fotev avatar anton_fotev 5 Точки

На мен ми дава 60/100

Кода ми е следния:

 

using System;
using System.Collections.Generic;
using System.Linq;

namespace _9A_test
{
    class Program
    {
        static void Main(string[] args)
        {
            string input = "";

            var listUsers = new Dictionary<string, List<string>>();

            while ((input = Console.ReadLine()) != "Lumpawaroo")
            {
                var inputFirst = input
                     .Split(" | ")
                     .Select(x => x.Trim())
                     .ToArray();

                var inputTwo = input
                    .Split(" -> ")
                    .Select(x => x.Trim())
                    .ToArray();

                bool isNewUsers = inputFirst.Length > inputTwo.Length;

                if (isNewUsers)
                {
                    if (!listUsers.ContainsKey(inputFirst[0]))
                    {
                        listUsers[inputFirst[0]] = new List<string>();
                    }

                    if (!listUsers[inputFirst[0]].Contains(inputFirst[1]))
                    {
                        listUsers[inputFirst[0]].Add(inputFirst[1]);
                    }

                }

                else // !isNewUsers => .Split(" ->")
                {
                    foreach (var kvp in listUsers)
                    {
                        if (kvp.Value.Contains(inputTwo[0]))
                        {
                            kvp.Value.Remove(inputTwo[0]);
                        }
                    }

                    if (!listUsers.ContainsKey(inputTwo[1]))
                    {
                        listUsers[inputTwo[1]] = new List<string>();
                    }
                    listUsers[inputTwo[1]].Add(inputTwo[0]);

                    Console.WriteLine("{0} joins the {1} side!", inputTwo[0], inputTwo[1]);
          
                }

            } // end while

            listUsers = listUsers
                .OrderBy(x => x.Value.Count)
                .ThenBy(x => x.Key)
                .ToDictionary(x => x.Key,
                              x => x.Value);

            foreach (var kvp in listUsers)
            {
                if (kvp.Value.Count > 0)
                {
                    Console.WriteLine("Side: {0}, Members: {1}", kvp.Key, kvp.Value.Count);

                    foreach (var user in kvp.Value.OrderBy(x => x))
                    {
                        Console.WriteLine("! {0}", user);
                    }
                }
            }

        }
    }
}
 

0