Loading...
StefanPas avatar StefanPas 5 Точки

задача 04. String-Builder

Здравейте,

На тази задача, след като я подам в judge ми излизат две грешки на тест 6 и тест 7. Проблемът е, че при мен резултатите си съвпадат с очакваните изходни резултати. Качвам кода, ако някой може да каже защо това се получава ще съм благодарен.

Тагове:
0
C Programming 09/12/2015 13:13:52
Filkolev avatar Filkolev 4482 Точки

Разликата най-вероятно идва от факта, че пускаш кода под Линукс, докато Judge работи под Уиндоус. Ако пуснеш кода в Уиндоус среда би трябвало да забележиш бъговете. Една от основните причини е, че Линукс зачиства паметта и неинициализирани променливи не получават garbage стойности, докато под Уиндоус това не е така. Друг вариант е да пуснеш въпрсните тестове през valgrind, почти гарантирано ще открие някакви грешки, които да ти подксажат какво се случва.

Доста е трудно в такъв голям код да се види какъв е проблемът без да се дебъгне в IDE, но основните неща, за които трябва да следиш, е дали заделяш достатъчни буфери (примерно за стринг от 64 символа трябва да заделиш 65, за да имаш null terminator накрая) и дали си инициализираш/зачистваш паметта, преди да я ползваш. Може да пробваш буфера, който ползваш за командите да го нулираш, просто идея. Valgrind или дебъгване под Уиндоус би трябвало да ти покажат реалната причина, в случая просто гадая на база личен опитс Judge.

ПС. Моля недей да копираш дълъг код във форума, ползвай pastebin или GitHub за целта.

1
StefanPas avatar StefanPas 5 Точки

Благодаря за обстойния отговор. Валгриндът свърши работа :)

0
StefanPas avatar StefanPas 5 Точки

На този линк са качени:

https://softuni.bg/downloads/svn/c-programming/Oct-2015/18.%20C-Programming-Exam-14-November-2015.zip

1
villyjord avatar villyjord 175 Точки

thnx!

0
villyjord avatar villyjord 175 Точки

Има ли шанс да видим оригиналните решения от стария изпит на тази и другите задачи в джъдж? Не ги намирам за този изпит.

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