Loading...

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

fristgerb avatar fristgerb 50 Точки

[Homework] C Arrays

Здравейте! :)

Понеже може за някои хора да е полезно, а и видях, че и други пускат така, ето моето домашно за C Arrays (всички задачи): http://www.libtec.org/dev/softuni/08-arrays/

С Mercurial може да ги изтеглите така, в терминал:

hg clone http://www.libtec.org/dev/softuni/

 

Тагове:
3
C Programming 27/10/2015 00:52:43
GerganaYord avatar GerganaYord 78 Точки

Много бързо качваш всички домашни и ако решенията ти бяха на ниво "разбираеми за идиоти" бих се изкушила да плагиатствам, но слава богу не са :) .

Бих искала да споделя алтернативно решение на 6та - Join Lists, доста по-хамалски е написано, т.е. не е структурирано във функции, но е малко по-различно като алгоритъм, доколкото ти:

1)Сливаш 2та масива, 2)Сортираш новополучения масив 3)Правиш нов масив изключващ излишните елементи,

а аз

1) Превъртам 2та масива и записвам в трети само неповтарящите се елементи 2)Сортирам го.

Реших че може би ще е по-разбираема за по-начинаещи, макар че надали има много хора, които още не са я решили:

http://pastebin.com/f7FgKEE5

(За пръв път позвам pastebin, но ми се стори по-лесно за употреба от твоя вариант или github, надявам се линка да работи).

 

 

1
itonev avatar itonev 22 Точки

Здравей :)

Супер са ти решенията.

Aко позволиш един страничен въпрос, как ползваш  libtec.org, никъде не видях опция да си създадеш репо ?

Може и аз да греша нещо, не е изключено.

0
fristgerb avatar fristgerb 50 Точки

libtec.org е мой сайт на мой сървър - само аз и още няколко човека могат да качвам и да правя репота там. :)

2
28/10/2015 12:05:33
vitit avatar vitit 0 Точки

Нямам представа дали е ОК да ви помоля за помощ, но задачата за най-дълга нарастваща поредица нещо ми куца. Някой може ли да ми каже, защо принтира някои елементи по 2 пъти и защо изпуска последното число.

 

https://docs.google.com/document/d/1xSSbyz06sBOXYrk_kIB6MMI-zAEUSC89kLn-lmRcI7w/edit?usp=sharing

0
Innos avatar Innos 419 Точки

Разбира се че може да питаш за помощ, затова е тука форума.

За съжаление не съм си на компютъра със NetBeans-а колега, но мога да ти помогна така или иначе на пръв поглед виждам няколко грешки, примерно пробвай да проследиш задачата си с поредица {1,2,3,4}, i = 0, array[i]<array[i+1] минава, j = 0 и печаташ всички елементи на поредицата (1,2,3,4), но после ще се върнеш и ще увеличиш i със едно и пак всички условия ще са изпълнени и ще изпечаташ числата 2,3,4 пак и след това същото за i=2. Освен това програмата ти чете извън отделената й памет, вземи проверките array[i] < array[i+1] например, когато i стане равно на последния елемент array[i+1] ще е извън масива ти (i.e. ще четеш по чужда памет), също така масива int longest[max] не го инициализираш никъде така че стойностите които прочетеш от него са някакъв garbage memory.

Ето едно примерно решение: изпечатваш първият елемент (той няма как да не прави редица поне от 1 елемент), и след това с 1 цикъл обхождаш всички елементи от 1вият до края на колекцията като сверяваш със задния array[i] > array[i-1] (понеже започваш да обхождаш от 1вият не 0вият индекс си сигурен че няма да се опиташ да четеш извън масива). Вътре в цикъла правиш тази проверка която посочих и ако текущият елемент е по голям от миналият го изпечатваш и увеличаваш една променлива която ще следи дължината на растящата поредица която текущо образуваш, ако текущият елемент не е по голям от миналия, тогава отпечатваш нов ред, след това пак числото и сетваш променливата която следи дължината на редицата на 1 (ако стигнеш по малко число, значи си стигнал края на миналата растаща поредица и трябва да почнеш нова). С 2ра проверка проверяваш дали текущо образуваната редица е по дълга от най-дългата намерена до сега, ако е запомняш дължината й и началният й индекс в 2 променливи. Като свършиш обхождането просто изпечатваш от индекса който си записал елементи на броя дължината на максималната редица. Ето кода за такова решение:
клик

1
29/10/2015 04:31:10
deyan.boikliev avatar deyan.boikliev 4 Точки

Вчера се опитах да предам домашното в 23:55 и сървърът най-нагло ме отряза, че срокът е изтекъл, имайки предвид че е до 23:59. Да, наясно съм че предавам в последния момент и има възможност за разлики в синхнронизациите на времето, но работя и единственият ми прозорец за решаване е след работа. Или се подсигурете че е точно до секундата или оставете буфер от няколко минути. Когато пише, че срокът е 23:59 очаквам в 23:58 да ми бъде приет submit-a.

0
30/10/2015 15:20:11
deyan.boikliev avatar deyan.boikliev 4 Точки

Човекът, който ми слага "минус" би ли ми обяснил защо не съм прав?

0
30/10/2015 14:02:58
fristgerb avatar fristgerb 50 Точки

Дадох минус на първо време, защото не ми се обяснява в текст. ;)

Иначе не съм съгласен по няколко причини.  От една страна, „тонът“ на написаното ми се струва неуважителен - такъв, който хората от SoftUni определено не заслужават, дори и да са в грешка в случая.

От друга, ми напомня отношение тип „другите са виновни за всичко, аз винаги нямам никаква вина“.  Както каза, нещата са спорни, вероятно просто има разминаване в часовниците.  Но не смятам, че в случая само SoftUni трябва да им е точен часовника и да имат буферно време. И учениците са длъжни да не предават домашното в последната минута - и те трябва да имат буферно време за предаване.

Може би съм малко повлиян и от други ученици и съм прибързал със заключенията към теб, за което се извинявам - махам „минуса“.

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

2
30/10/2015 15:55:01
deyan.boikliev avatar deyan.boikliev 4 Точки

Първо, благодаря, че ми отговори вместо просто да оставиш минус.

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

Тук не мога да се съглася.

"И учениците са длъжни да не предават домашното в последната минута - и те трябва да имат буферно време за предаване."

Указан е официален краен срок за предаване, който би трябвало да се уважава и следователно аз трябва да мога да предавам, когато искам до изтичането на този срок. Да, не е "хубаво" да се предава в последната минута, но никъде не е забранено. "Буфер" за себе си нямаше как да сложа тъй като буквално изтисквам свободното си време, както за работа, така и за този и други курсове. В 23:53 бях готов с последната задача, архивирах файловете и в 23:55 се опитах да предам. Както и да е. Целта на поста ми беше, да дам feedback, за нещо, което ми е повлияло негативно при ползване на системата и може би да се потърси евентуално решение на проблема за в бъдеще или поне хората да знаят, че този проблем съществува.

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

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