Loading...

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

Filkolev avatar Filkolev 4482 Точки

[Homework] C# Basics - Advanced Topics - mistakes

Здравейте колеги,

Направи ми впечатление, че в някои от условията на задачите има допуснати грешки - най-вече в дадените примери към задачите. Дотук забелязах няколко и ще ги споделя; моля допълвайте списъка ако има и други, за да не се чудят колегите къде грешат, дали не са разбрали както трябва и т.н. Добре ще е да се мъчим върху самите задачи, а не върху сгрешените примери. Хубаво е и да се отстранят тези неточности за следващите курсове.

Задача 1 - това не е толкова грешка, но е разминаване с предишната задача с редица на Фибоначи (от домашно 4). Полезно е да се отбележи за тези (като мен), които са решили да си копират алгоритъма от предишното решение, при което няма да съвпадат отговорите, които дава програмата, с дадените примери. Разликите са:

  • броенето на членовете (т.е. индексирането) започва от 0, не от 1.
  • първият член е 1, а не 0.

 

Задача 8 - non-decreasing ще рече, че всяко следващо число в редицата е по-голямо или равно на предходното. Съответно, последните три примера са подвеждащи. Трябва резултатите да са следните:

Вход Изход
1 1
7 3 5 8 -1 6 7 3 5 6 7
1 1 1 2 2 2 1 1 1 2 2 2
1 1 1 3 3 3 2 2 2 2 1 1 1 2 2 2 2
11 12 13 3 14 4 15 5 6 7 8 7 16 9 8 3 4 5 6 7 8 16

 

Задача 12 - тук има грешка във втория пример, където първо трябва да се изведе броят на Nakov, след това на SoftUni, защото N е преди S в азбуката (в условието се иска да се изпишат по азбучен ред).

 

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

 

Поздрави!

Тагове:
4
Programming Basics
Hristo_Penchev avatar Hristo_Penchev 389 Точки

На задача 13 Average Load Time Calculator примерите не са зададени коректно:

 

2014-Mar-03 22:01 http://www.google.com 2,45
2014-Mar-03 22:01 http://www.google.com 2,77

Все пак на трети март в 22:01 Гугъл 2 2,45 секунди ли сме го зареждали или 2,77?

 

Написах задачата с речници и използвах DateTime за ключ. Но при това положение няма как да стане. По принцип моят подход не е съвсем правилен, понеже нищо не пречи да се зареждат два адреса едновременно, но няма логика да зареждаш един и същи адрес два пъти едновременно.

Мога да направя задачата и с три листа, като използвам поредния номер за идентификатор, но тогава смисълът на часа и датата се губи в задачата.
0
Filkolev avatar Filkolev 4482 Точки

За 13-та задача - в рамките на 1 минута доста пъти може да си заредиш една страница, да я рефрешваш и т.н. Не виждам кое му е странното при положение, че точността на часа е до минута; ако беше до секунда и там съвпадаха 1:1 тогава да.

Отосно самото решение на задачата, замислих се и аз за речник, но се отказах, понеже не видях начин да го направя. Ползвах списъци, като хич не съм се интересувал от датата и часа, ползвах само данните за сайт и време на зареждане. 

0
Hristo_Penchev avatar Hristo_Penchev 389 Точки

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

0
Filkolev avatar Filkolev 4482 Точки

Задачата иска да сметнем средно време за зареждане на страница, това дали ще стане с речници, списъци или с нещо друго няма никакво значение за мен като оценяващ. Ако програмата дава верен резултат тя работи правилно и толкоз.

На мен ми се струва излишно да отчитам дата и час и ако попадна на домашно, което ги ползва, ще напиша точно такъв коментар: "Защо? С какво ти помага това да намериш резултата, който се търси? Какво влияние оказват тези данни върху искания резултат?". Нормално е в реалността да ти дават някакви данни и не всички да са ти нужни за дадена цел. В училище малко са ни повредили всички, защото рядко в дадена задача ни се дава излишно инфо; случвало ми се е, но трябва да се прави по-често, иначе спада способността ни да мислим критично според мен.

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

ПС. Речник ползвах в друга задача, така че предполагам и другите колеги може в някоя задача да успеят да ги упражнят. Но в изпитна задача не ми се е случвало някъде да имам нужда от такъв, така че масивите и списъците според мен са доста по-важни към момента.

0
nikola.m.nikolov avatar nikola.m.nikolov 830 Точки

Като се замисля повече над тази задача то според мен този report за всяко зареждане на страница в практиката се генерира автоматично от система, която записва всичко в някакъв файл. Формата на всеки ред е зададен от системата, така че няма нужда да проверяваме в нашата програма дали въведения ред е валиден. Най-логично е нашата програма, която да намира средното време за зареждане на всеки сайт, да чете от файл. Но за целите на домашното го направих чрез четене от конзолата(както повечето колеги). Получи се доста компактно и кратко решение според мен. Първоначално пробвах с речници, но ударих на камък, защото записвах като key името на сайта, а като value - времето за зареждане на сайта. Е да, но при речниците не може да има дублиращи се ключове и заради това използвах List-ове, но на всяко value от листа задавах и key. При List няма никакъв проблем да има повтарящи се keys. Ето го моето решение:

13. AverageLoadTimeCalculator

В началото и аз като повечето колеги се чудих при въвеждане от конзолата да разбера кога е въведен последния ред на report-a. Видях, че един колега чете чрез while от конзолата, докато не попадне на празен ред и реших и аз така да го направя. А и в работата като съм гледал файлове на разни error report-и то курсора винаги се намираше на празен ред.

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