Новинарски форум

Домашно 3. Файлове в архив

Домашно 3. Файлове в архив

от Веселин Райчев -
Number of replies: 67
Ако имате въпроси по условието на домашното, тестването и т.н. пишете тук.

Заданието е по-трудно от предните и е със срок 15ти Април. Имйте предвид, че преди края на това може да трябва да пишете друго домашно.
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Динко Иванов -
Ограничението за писане на C/C++ само за това задание ли е или остава за постоянно???
In reply to Динко Иванов

Re: Домашно 3. Файлове в архив

от Веселин Райчев -
Само за това задание. Разбира се може да измислим ново задание пак с ограничение, но засега е само за това.

Искам да отбележа, че НЕ можете да използвате готови библиотеки.
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Петър Стаев -
А какво се разбира под вградени библиотеки??? Функциите от string.h може ли да ги използваме? A qsort и bsearch?
In reply to Петър Стаев

Re: Домашно 3. Файлове в архив

от Веселин Райчев -
Не съм споменавал нищо за "вградени" библиотеки. Можете да използвате string, qsort, sort и т.н. Но не можете да свалите от интернет някакви библиотеки и да ги включите към проекта си. Най-добре решението ви да се състои от един .cpp файл. Също не работете групово, т.к. от това може да пострада цялата група. смях

Можете да използвате памет колкото искате (все пак има 2GB адресируеми под Windows). Вероятно ще се тества на компютър с 512MB или 1GB памет. Ако заделите твърде много, ще предизвикате четене и писане от хард диска, което вероятно ще забави програмата фатално.
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Петър Стаев -
А ще може ли да качите някой гаден тест да тестваме ;-)
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Емил Табаков -
Може ли да има и други хардове или С:/ се явява основна папка ... ?
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Петър Стаев -
А ще се счете ли за грешен изход ако на изхода след папката извеждам и / (т.е. за дадения пример изведа c:/windows/ вместо c:/windows)?

И айде най-накрая да кажете кода на задачата, че не остана време ;-)
In reply to Петър Стаев

Re: Домашно 3. Файлове в архив

от Йоан Карадимов -

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

Иначе, да... няма да е зле да кажете "идентификатора" на задачата... че вече трябва да се предава...

In reply to Йоан Карадимов

Re: Домашно 3. Файлове в архив

от Петър Стаев -
Точно него имам в предвид. Но наистина може малко двусмислено да звучи както съм го казал ;-) Дано след пояснението все пак някой се сети и даде идентификатора на задачата :-)
In reply to Петър Стаев

Re: Домашно 3. Файлове в архив

от Веселин Райчев -
Ееее. То и код/идентификатор трябвало да има. Добре - използвайте код/идентификатор files.
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Петър Стаев -
Не получих отговор на въпроса за / ???
In reply to Петър Стаев

Re: Домашно 3. Файлове в архив

от Веселин Райчев -
Аз чета редовно форума. Като не получавате отговор - значи го има в условието на задачата.
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Nikolay Tsonev -
А можете ли да дадете някакво ограничение за броя на файловете в архива.
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Петър Стаев -
А каква трябва да бъде горе долу скоростта за изпълнение, така че даден тест да бъде издържан?
In reply to Петър Стаев

Re: Домашно 3. Файлове в архив

от Веселин Райчев -
Цитат "Оценяването ще е на база на скоростта на програмата ви върху набор от тестове"

Оценяването ще е на база на другите студенти. Най-бързия печели най-много.
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Веселин Райчев -
Виждам, че вече има изпратени отговори. Моля ви внимателно тествайте програмите си, защото наличието на бъгове може да се окаже фатално. Все пак ще ви сравняваме основно по скорост, а не по грешност.

затова обръщам внимание на следните:

Някои от вас четат "Максималната дължина на ред от входа е 120 знака" и вероятно ще се изкушите да направите масив от 120 char-а. Не забравяйте, че трябват 121 заради \0 в края на низа. А скоростта на програмата ви може и да се подобри ако направите масива от 128 елемента (в зависимост от това как е направено) смях Въобще 128 е препоръчително и защото ако използвате fgets - ще се прочетат и символи за нов ред в края на string-а.

Искам също да напомня, че програмата ви не трябва да печата нищо друго освен отговора на задачата. Може да не се занимая да поправям решения, които ме питат например "vavedete fail ili # za kray".
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Огняна Райнова -
"Можете да приемете, че задачата винаги ще има единствено решение."
значи ли това, че винаги съществува такава папка или значи, че ако я има, щ е е единствена?
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Емил Табаков -
Допуска ли се в една папка да имаме файл и папка с едно и също име? Пример:

../mente.txt
../mente.txt/ala-abala.bin

In reply to Емил Табаков

Re: Домашно 3. Файлове в архив

от Огняна Райнова -
не би трябвало, това и windows няма да ти го разреши(пробвай, ако искаш, не става:)
In reply to Огняна Райнова

Re: Домашно 3. Файлове в архив

от Емил Табаков -
Знам че не става и въпреки това никой не е казал че задачата е обвързана с уиндоус ..
In reply to Емил Табаков

Re: Домашно 3. Файлове в архив

от Огняна Райнова -
то и под дос няма да стане... за линукс не знам, но сериозно подозирам че не става.
In reply to Огняна Райнова

Re: Домашно 3. Файлове в архив

от Веселин Райчев -
Можете да приемете, че такива тестове няма да правим. Т.е. няма да има папка и файл, които се намират в една папка и имат и едни и същи имена.
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Петко Петков -

Ka4ih edno re6enie,a sega iskam da predam drugo...kak da go napravq?

In reply to Петко Петков

Re: Домашно 3. Файлове в архив

от Татяна Иванова -

Входните данни винаги ли са така хубаво подредени? Възможно ли е входните данни да започват така:

c:/windows/system32/aaa.txt

c:/win.com

c:/windows/bbb.txt

c:/windows/system32/ccc.txt

In reply to Петко Петков

Re: Домашно 3. Файлове в архив

от Петър Стаев -

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

In reply to Петър Стаев

Re: Домашно 3. Файлове в архив

от Веселин Райчев -
Според мен трябва да можете да изпратите няколко пъти - стига да не сме го оценили вече.
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Петър Стаев -
Е трябва, ама не можем, зашото като сме пратили веднъж и отдолу вече го няма бутона "Browse..." и полето, в което избирахме файла!!!
In reply to Петър Стаев

Re: Домашно 3. Файлове в архив

от Бояна Ликоманова -

izvinqvam se,che pitam tolkova kysno,ama moje li da izpolzvame standartnata biblioteka na C++  - stl?

ako moje samo da mi dadete byrz otgovor,che zakysnqvam sys srokovete- MNOGO BLAGODARQ PREDVARITELNO!срамежлив(а)

In reply to Бояна Ликоманова

Re: Домашно 3. Файлове в архив

от Веселин Георгиев -
Беше писано по-горе, повтарям думите на Адаша:

Можете да ползвате каквито си искате стандартни библиотеки (вкл. STL). Не можете да ползвате готови библиотеки (например, свалени от интернет или копирани от някой проект).
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Динко Иванов -
Искам да попитам дали ако сте архивирали главана папка(например "C:/") изхода какъв трябва да е "C:/" или както останалите случаи без "/" "C:" ?
Също така не разбрах какъв ще е идентификатора на програмата?
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Явор Янев -
Как мога да кача по-нова версия на файла, който съм качил
In reply to Явор Янев

Re: Домашно 3. Файлове в архив

от Петър Стаев -
Ами май за сега никак :-( Освен ако някой от преподавателския екип не вземе да оправи този проблем. 
In reply to Петър Стаев

Re: Домашно 3. Файлове в архив

от Phil Balinov -
In reply to Phil Balinov

Re: Домашно 3. Файлове в архив

от Атанас Ладжов -
az nqmah nikakyv problem da kacha nova versiq na zadanieto.
prosto cyknah na linka "zadaniq" i na stranichkata nai-dolu imashe forma za upload
izpolzvam opera ot fmi (ne znam ima li znachenie)
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Веселин Райчев -
Вече има резултати. Трагични са, но това е реалността. Като цяло трябва да отбележа:

#include <iostream.h> е неправилно и води до некомпилиране. Изкривих се да махам .h и да пиша using namespace std; усмивка

променлива дефинирана така:
for (int i=0;i<n;i++) съществува само в тялото на цикъла. Това, че някои от вас са успяли да компилират код, в който i се използва след цикъла се дължи на бъг във visual studio 6.

Хората, на които съм казал милисекунди са с верни (за тестовете ми) програми и са получили точки (20 за под 5 секунди, 15 за под 12 секунди и 10 за под 30 секунди). Хората с грешни или бавни решения нормално не може да имат претенции за частични точки. Но ако си намерите бъг и промяната е малка - може да ми пишете контестация и да приложите поправено решение (което обаче трябва да се компилира) като все пак ще Ви глобим злорадо с точки за този бъг.

Очаквайте следващото домашно скоро.
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Петър Стаев -
А ще може ли да качите най-добрите(бързите) решение (за да можем да видим как се прави :-) ) и да кажете за колко секунди се е справил с тестовете?
Ще е добре все пак да кажете и н а каква машина са правени тестовете ;-)

П.П.: А за да не се кривите друг път ;-) казвайте под какви компилатори ще компилирате програмите (напр Windows - Visula Studio .NET 2003, Linux - gcc). Иначе ние не сме ясновидци, за да знаем под какво ще компилирате :-) (може да искате да компилирате под Borland C++ 3.1 :-D )
In reply to Петър Стаев

Re: Домашно 3. Файлове в архив

от Теодор Стоев -
Според мен ще бъде много полезно да качите и тестовете, върху които сте оценявали, за да можем да си проверим това, което сме написали и евентуално да си открием грешките.
Не мога да не отбележа, че може би най-трудното в тази задача беше именно изнамирането на адекватни входни данни, с които да тестваме. Не е никак лесно да си направиш тестов пример с 500 000 файла. Освен това предполагам, че повечето участници далеч не могат да отделят толкова много време за измисляне на сложни тестове, при които програмите "грешат" или "гърмят".
Може би нямаше да е лошо да дадете и някоя точка отгоре за положения труд, но това е друга тема - не искам да разводнявам :)
In reply to Теодор Стоев

Re: Домашно 3. Файлове в архив

от Петър Стаев -
Да, ще е добре и тестовете да имаме ;-)
Но и оценяването според мен не е много справедливо:-) Например аз имам 6.525 сек. и дефакто попадам в една и съща графа с този, който е написал алгоритъм два пъти по-бавен от моя!!! Според мен би било по-честно ако например на първите няколко най-бързи алгоритъма се даде макс точки и после ако твоя алгоритъм е да кажем с 1 сек. по-бавен от най-добрия да получиш 19 т., ако е с 2сек. по-бавен - 18 т. и т.н :-D
In reply to Петър Стаев

Re: Домашно 3. Файлове в архив

от Веселин Райчев -
Времената съм ги подбрал според това как хората се групират. и 6 и 10 секунди вземат 15 точки, но това не ощетява тези с 6 точки, защото тези, които имат повече от 15 точки имат доста по-бързи решения от 6 секундното. Аз просто сложих границата на 5 секунди, защото никой не е около нея. Също така смятам, че не е редно да оценяваме точно според времето т.к. то може да се промени ако сменя малко тестовете например (може за някой алгоритъм да съм по-близо до най-лошия случай, отколкото за друг)

Тестове когато дам ще отпадне опцията с контестацията и оправянето на бъгове. Така, че който има бъг да си направи сам тестове и да изследва.
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Теодор Стоев -
"Тестове когато дам ще отпадне опцията с контестацията и оправянето на бъгове. Така, че който има бъг да си направи сам тестове и да изследва."

В такъв случай какъв е срока, в който можем да си поправим решението и да го изпратим наново?
In reply to Теодор Стоев

Re: Домашно 3. Файлове в архив

от Веселин Райчев -
Смятам, че до края на месеца е приемливо да подавате контестации
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Свилен Димитров -

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

In reply to Свилен Димитров

Re: Домашно 3. Файлове в архив

от Веселин Райчев -
Имам 4 получени контестации и твоята не е сред тях. На всичките съм отговорил веднага къто съм ги прочел (което често става минути след изпращането им).
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Свилен Димитров -
Преди малко Ви го пратих на mail-a, така че пишете ако не сте го получили.
In reply to Свилен Димитров

Re: Домашно 3. Файлове в архив

от Веселин Райчев -
В конкретния случай съм получил файла още преди един месец, но съм пропуснал да го проверя. Въпреки това, контестацията не се уважава напълно. Има твърде голяма разлика в кода преди и след контестацията. Контестациите са ако си намерите бъг, а не за да имплементирате отново задачата. Все пак положените усилия заслужават частични точки и се получават 50% от точките.
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Петър Стаев -
Е добре колко е най-доброто време??? И дайте един списък с всички времена да видим кой къде и как се нарежда :-)

>>"тези, които имат повече от 15 точки имат доста по-бързи решения от 6 секундното"
Да, но тези с 12 секундното имат доста по-бавно решение от 6 секундното :-D
In reply to Петър Стаев

Re: Домашно 3. Файлове в архив

от Веселин Райчев -
Малко над 2 секунди. За 5 теста общо.

Смятам, че точките са справедливо раздадени според времената. Такъв с 12 секунди няма. Има с около 10 и някъде към 16-те секунди.
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Петър Стаев -
Добре ето една проста сметка:
2сек + 4сек = 6сек
6сек + 4сек = 10сек
Тогава ако наистина всички под 5сек имат 20 точки съм абсолютно съгласен :-) Но не смятате ли че границата трябва да си е 10сек, не 12сек. (представете си че се появи някой с 12 сек. ;-) ) ? Същото се отнася и за другите граници - 5 и 30сек.
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Phil Balinov -
> не се копилира, печата глупости

компилира се под всички версии на gcc до 2.95 назад, със по-стари нямам възможност да тествам точно в момента.

както във заданието пише, "На стандартния изход трябва да отпечатате само пътя на търсената папка X". При мен се печатат неща на stderr, на stdout се изпечатва само една единствена директория. Ако сте имали друго в предвид да сте си го написали на страницата.
In reply to Phil Balinov

Re: Домашно 3. Файлове в архив

от Веселин Райчев -
Така - аз компилирам с Visual Studio 2005. А за да се оправиш с gcc - пишеш gcc -pedantic и гледаш къде не си наред.

Това със stderr са измислици и при тях е нормално да се очакват 0 точки.
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Петър Стаев -
Абе хора, в задачата пише "стандартен вход", което е stdout! Нищо не пише за stderr! Така че няма защо да се дават 0т. ако за някакви междинни резултати човека е използвал stderr за да си отпечатва нещо. Нали на stdout му се появява отговора и изхода му е верен!!!
In reply to Петър Стаев

Re: Домашно 3. Файлове в архив

от Веселин Райчев -
Стандартен вход не е stdout :) А по въпросите с това дали може да се пише в stderr - видимо е, че не може. Нищо не е споменавано за междинни резултати. А stderr аз го разглеждам според предназначението - ако например нещо изгърми, информация ще има там и в този случай програмата е нормално да се оцени като завърши с грешка. Конкретно в този случай аз не съм се интересувал от това дали отговора е в stdout или stderr.

В крайна сметка получих контестация по този въпрос и вече е разрешен.
In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Явор Янев -

Аз компилирам с Visual Studio 6.0 и всичко е наред. Кажи с какъв компилатор искаш да може да се компилира, за да го оцениш?

In reply to Веселин Райчев

Re: Домашно 3. Файлове в архив

от Деян Гунчев -

Не мислите ли, че е неприятно това че, в зависимост от използвания компилатор, на някой програмата му се компилира, а на друг не? И аз писах приложението си използвайки gcc и Eclipse и успях да компилирам с gcc, а както разбирам сега се оказва че gcc не е толкова "педантичен" в някои случаи(срещащи се в моя код) колкото майкрософтския компилатор. Все пак съм вложил доста труд в писането на този код и не смятам че е корерктно да получавам 0/20 точки само защото компилаторът на проверяващия е различен от моя. Това не е проблем, за който сме виновни ние, не мислите ли? Затова ми се струва че би трябвало да ни се даде възможност да променим решенията си и да ги пратим отново. 

In reply to Деян Гунчев

Re: Домашно 3. Файлове в архив

от Петър Стаев -
Такава възможност има. Просто подай контестация ;-)
In reply to Петър Стаев

Re: Домашно 3. Файлове в архив

от Phil Balinov -
проблемът изобщо не е в това, че gcc е по-малко педантичен от майкрософтския компилатор, дори напротив. Освен това gcc поддържаше ISO C90 и C99 години преди майкрософт да го направят. В момента и двата могат едно и също, така че ако се компилира под едното, ще работи и под другото. По-скоро трябва да се внимава да използваш ANSI C / POSIX библиотеки, т.е. да избягваш тези, които ги няма изобщо по Windows, щото във Visual Studio ше ти ореве света.
In reply to Phil Balinov

Re: Домашно 3. Файлове в архив

от Веселин Райчев -
Няма човек, на който да не съм му оправил сорса като не се компилира. Т.е. проблемът "не се компилира" съм го давал за информация и не е причина за неоценяване. Има хора с точки, на които не им се компилира.