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
StoilValkov avatar StoilValkov 10 Точки

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

 

0
nickwork avatar nickwork 657 Точки

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

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 657 Точки

Тествах цялото ти решение и да ти кажа, че не си се оплел ами си прав, наистина и такъв синтаксис работи, аз лично никога не съм инициализирал по този начин, а и не съм виждал да се инициализира така и за това си помислих, че там е грешката, но не беше (евала за което)... основният проблем в решението е, че приемаш входните данни като масив на един ред, а те се получават на 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
StoilValkov avatar StoilValkov 10 Точки

Явно си гледал друго условие на тази задача.

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

0
13/03/2020 18:24:44
Judeva avatar Judeva 0 Точки

Смени double с decimal.

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