Профил
Loading...
+ Нов въпрос
SvilenPavlov avatar SvilenPavlov 11 Точки

Sets and Dictionaries Advanced LAB - 2. Average Student Grades

Здравейте!

Получавам само 20/100 с кода тук:https://pastebin.com/EUe5t9bV

 

Интересното е, че по условие трябва да са подреденеи по среден успех от най-голям към най-малък, а първоначално, когато използвам

.OrderByDescending(x => x.Value.Average()) в сортировката на принтирането ми дава 10/100 с 3/3 верни нулеви тестове. А без тази сортировка, дава 20/100 с 2/3 верни нулеви тестове.
Много бих бил благодарен на лекторите, все пак да пускат решенията си в джъджа, защото понякога с тяхното решение не дава 100/100, да не говорим за решениеята в презентациите, които са написани на 2 на 3, и често некоретна стилизация на кода (примерно на if statement отдолу тялото е написано като 1 ред вместо с къдрави скоби).

Тагове:
0
Module: C# Advanced 11/12/2018 11:35:34
vanya_ant avatar vanya_ant 78 Точки

Здравей,

Речникът ти не трябва да е Sorted и преди последния закоментиран WriteLine, който трябеа да откоментираш, ти трябва Write.

 

0
SvilenPavlov avatar SvilenPavlov 11 Точки

Здрасти!
Пробвах различни неща и не съм го махнал, но и с този код: https://pastebin.com/Q8CiCVxj
където е оправено пак 3/3 пробни и 1/10 истински тестове :(

0
vanya_ant avatar vanya_ant 78 Точки

Ето за това ти говорех:

https://pastebin.com/VghaUg49

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

0
SvilenPavlov avatar SvilenPavlov 11 Точки

Божке мили, чета, ядосвам се....а никъде не го пише наистина! Благодаря!

0
TeodorStefanovPld avatar TeodorStefanovPld 1278 Точки

няма го условието,но както колежката ти е посочила тоя sorted ти прецаква всякакви подреждания от самото начало

второ if изписан на един ред е съвсем валиден код,според новите тенденции и как развиват езика. :Д 

А кода от упражненията винаги го пускат в judge, така че ако ти не можеш да преписваш или не си виждаш грешката не означава че грешката е в упражнението :Д

пък ако е толкова зле никои не те кара да учиш тук имаш избор :Д

-2
SvilenPavlov avatar SvilenPavlov 11 Точки

https://pastebin.com/Q8CiCVxj
Тук съм го оправил и пак кел файда. 
 

Аз съм СофтУни фанбой също, брат, не ме разбирай погрешно. Коментирам градивно, защото такава обратна връзка подобрява услугата им.
Иначе не, че се познаваме, но аз не съм човек, който първо ще търси грешка  в условията, по-скоро не я търся там много след като е трябвало. Пиша го тоя пост, точно защото на конкретната лекция лектора не си ги пускаше в джъдж кодовете, което е ок особено като се елементарни нещата. В интерес на истината, точно това ме ядоса, че е лесна задачата, а като не ми даде точки се почувствах мн глупаво.
Накрая на това видео, се оказа че лектора се връща на тая задача, давайки си сметка че ще гръмне, даже самия каза че има проблем с тестовете.

По отношение на if-а, знам че работи, но не съм наясно с новите тенденции и би ми било полезно да разбера как е готино.

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

1
GeorgiPaunov avatar GeorgiPaunov 264 Точки

А къде в условието пише, че трябва да бъдат сортирани? От кой курс е тази задача?

P.S. а що се отнася до липсата на скоби по презентациите - причината е ограниченото място на слайдовете.

0
12/12/2018 02:27:05
SvilenPavlov avatar SvilenPavlov 11 Точки

Здрасти!
Ето условието: 
https://softuni.bg/downloads/svn/csharp-fundamentals/2018-Sept/CSharp-Advanced/03.%20Dictionaries%20Advanced%20and%20Sets/03.%20Sets%20and%20Dictionaries%20Advanced-Lab.docx
Курса е C# Advanced Септ 2018,  Sets and Dictionaries Advanced - Lab

И сега чак видях, че никъде не е казано. Благодаря!

0
12/12/2018 13:04:04
StoilValkov avatar StoilValkov 10 Точки

Ето го и моя код някой ще може ли да ми обясни защо ми дажа 60/100 точки и къде ми е грешката.
Благодаря предварително!
https://pastebin.com/nwL9XBWY

 

0
nickwork avatar nickwork 559 Точки

Не съм ти тествал кода но това което забелязвам е 

if (!dictNameAndGrades.ContainsKey(nameAndGrades[0])) => тук проверяваш дали няма такъв ключ

          {

                dictNameAndGrades[nameAndGrades[0]] = new List<double>(); => тук пък му казваш (след проверката като знаем, че няма такъв ключ), на този ключ (който знаем че го няма и не е добавен) nameAndGrades[0] е равен на нов масив от стринг => първо това е ключа ти и той не трябва да е масив а просто стринг., а и не можеш да присвоиш стойност на нещо което не съществува или да инициализираш нещо което го няма ..така че логиката е доста объркана в този случай.. това което трябва да направиш е като видиш че няма такъв ключ да добавиш такъв с командата адд  

dictNameAndGrades.Add(nameAndGrades[0], new List<double>()); и после надолу си продължаваш с кода.

           }

                dictNameAndGrades[nameAndGrades[0]].Add(double.Parse(nameAndGrades[1]));

0
StoilValkov avatar StoilValkov 10 Точки

Мисля че самия запис по този начин   dictNameAndGrades[nameAndGrades[0]] = new List<double>()  би трябвало да създаде нов ключ "namAndGrades[0] и на този ключ да му даде стойност нов масив от double.
Ако не е така значи много съм се оплел.

 

0
nickwork avatar nickwork 559 Точки

Тествах цялото ти решение и да ти кажа, че не си се оплел ами си прав, наистина и такъв синтаксис работи, аз лично никога не съм инициализирал по този начин, а и не съм виждал да се инициализира така и за това си помислих, че там е грешката, но не беше (евала за което)... основният проблем в решението е, че приемаш входните данни като масив на един ред, а те се получават на 2 отделни... вкарах и малко корекция в отпечатването на изхода...пускам ти решението ти преправено да го разгледаш..

 

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

namespace Average_Student_Grades
{
    class Program
    {
        static void Main(string[] args)
        {
            var num = int.Parse(Console.ReadLine());

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

            for (int i = 0; i < num; i++)
            {
                var name = Console.ReadLine();
                var grade = double.Parse(Console.ReadLine());

                if (!dictNameAndGrades.ContainsKey(name))
                {
                    dictNameAndGrades[name] = new List<double>();
                }
                dictNameAndGrades[name].Add(grade);
            }

            foreach (var kvp in dictNameAndGrades.Where(x => x.Value.Sum() / x.Value.Count >= 4.5).OrderByDescending(x => x.Value.Sum() / x.Value.Count))
            {
                var avrageSum = kvp.Value.Average();

                Console.WriteLine($"{kvp.Key} -> {avrageSum:f2}");

                //foreach (var val in kvp.Value)
                //{
                //    Console.Write($"{val:f} ");
                //}

                //Console.WriteLine($"(avg: {avrageSum:f})");
            }
        }
    }
}

0