Judge Assignment 2 (JA2) - Условия, Срокове, Въпроси, Коментари
Здравейте колеги,
EDIT: ето линк към състезанието - https://judge.softuni.bg/Contests/538/Judge-Assignment-2-JA2-OOP
Както обещах на упражненията, днес пускаме Judge Assignment 2, само че понеже не сме готови с подготовката на Judge системата още, днес ви пускам само условията, а в Judge constest-а ще можете да ги предавате от събота, 10:00 сутринта (както направихме и за първия judge assignment) - крайният срок остава непроменен. Ще ви дадем линк когато състезанието в Judge е готово.
Засега качвам условията в .shared папката в Dropbox (https://tinyurl.com/cpp-softuni-shared), и по-конкретно тук: https://www.dropbox.com/home/Projects/Cpp-Programming/.shared/Judge-Assignment-2-JA2. Възможно е да има леки изменения по ограниченията за време и памет, както и изменения ако открием бъг в някое решение или условие преди да пуснем състезанието в Judge.
Този Judge Assignment е различен от предишния с това, че освен условия, за някои задачи имате допълнителни файлове с код, които са достъпни за решенията ви. Тези "скелети" на решението са предназначени да ползвате от кода си, за да решите задачите. В някои случаи (като например задача 1) тези файлове имат main() функция, което означава, че вашият код ще трябва да допълни някакъв съществуващ код, за да може съществуващия код да работи. Не трябва да редактирате никой от тези предоставени файлове, тъй като при submit системата ще ги overwrite-не с нейната версия. В Judge системата ще предавате .zip файлове съдържащи вашите файлове нужни за решение на задачата - системата ще компилира всички .cpp файлове в .zip-а който пратите, заедно с всички файлове от "скелета" на решението, в една директория.
Ето кратки описания на задачите:
JA2-Task-1-List - от вас се иска да напишете имплементацията на един клас List, който представлява свързан списък. Дадени са ви List.h файл, както и main.cpp файл който ползва List-а от List.h за да реши някаква задача. Вие трябва да напишете имплементация (например в List.cpp), която позволява на задачата да работи вярно. (Тази задача щеше да е Matrix, не List, но реших Matrix-а да го преместя за подготовка за изпита, вместо за това домашно, най-вече защото изглежда като повече код).
JA2-Task-2-Divisible-by-45 - трябва да намерите всички числа, които се делят на 45 и се намират между две числа зададени на входа (от включително, до не-включително). Даден ви е файл BigInt.h, който можете да ползвате ако искате.
JA2-Task-3-Populations - Дадени са ви населения на градове и числата L, H и M. Трябва да намерите бройката градове, за които има поне M други градове, чиито населения са между L и H пъти по-големи. L, H и М се въвеждат от конзолата, а населенията на градовете са предварително зададени във файла populations.txt. Тук ще трябва да сте малко по-изобретателни с решението.
JA2-Task-4-Closest-Towns - Дадени са ви имена и координати на градове в двумерното пространство. Трябва да изведете 2-та най-близки града по име.
Ако имате въпроси или коментари, задавайте ги в тази тема (така най-бързо ще ги видя и ще мога да ви отговарям)
Поздрави,
Жоро
Здравей,
Като цяло това, че при теб върви по един начин, а на система върви по друг начин, означава, че най-вероятно достъпваш неинициализирана памет, или освободена памет.
В твоето решение има едно място, на което може един от методите да не return-не нищо, въпреки, че трябва (виж си warnings от компилацията) - но не е това проблемът в случая.
Имаш друго място, където работиш с памет, която не е твоя. И понеже го правиш, явно системата записва нещо друго в тази памет (най-вероятно пак от твоята програма, само че за някоя друга променлива) и затова получаваш все един и същи "цикъл" от 8 нулеви елемента.
Hint: като delete-неш нещо, вече нямаш достъп до него - ако си направил два указателя към едно и също нещо и изтриеш единия, другия пак не е валиден вече (представи си двама души да ти имат телефонния номер, обаче ти да си прекратиш договора с мобилния оператор - и двамата няма да могат да ти звънят - тоест те имат само номера ти, и ако договорът, който отговаря на този номер вече не е валиден, тогава на колкото и различни места да е записан този номер, няма как да му се обадиш).
Поздрави,
Жоро
Благодаря за помоща.Не съм сигорен но мисля че, проблема беше в копи-конструктора, опитвах се да направя проверка на неинициализирана променлива. Сега като се замисля е логично, че като this->head го направя на нуллптр трябва и this->size да стане 0.Оправих си също така и first метода. Имах доста проблеми с тази задача радвам се че одарих 100 точки :)
Благодарности отново.