Author |
Message |
15/11/2011 19:38:42
|
el1temkd
Joined: 31/10/2011 21:19:45
Messages: 3
Offline
|
Здраво ми треба помош за ц++ задача. Или некое мислење во врска со задачата, или некој пример на слична задача на оваа.
Еве ја задачата :
http://imageshack.us/f/401/zadaca.png
1. При внесување на влезните податоци да се прави валидација
2. Датотеката се сортира (подредува) по Презиме, Име. На тој начин се формира датотеката “Sort.dat”.
3. Датотеката “Sort.dat” да се користи како влезна датотека за добивање на победникот на фестивалот. Бодовите од публиката се доделуваат така што пеачот со најмногу гласови добива 12, вториот 10, третиот 8, четвртиот 7 и т.н. се до пеачот кој освојува 1 бод. Останатите пеачи не освојуваат бодови. Жирито се состои од 10 члена. Секој член од жирито дава оцена од 12 до 1 на претходниот принцип. Тие гласови се сместуваат во низа. Вкупниот број на бодови, од секој член на жирито и публика, го одредува победникот.
4.Излезниот податок за победникот на фестивалот:
Име и презиме на победникот:
Број на бодови:
Име на песната:
This message was edited 1 time. Last update was at 15/11/2011 19:39:13
|
|
|
16/11/2011 15:59:23
|
MOI
Joined: 07/07/2010 16:31:48
Messages: 447
Offline
|
1. Се што треба да направиш е дадено во текстот на задачата - треба само да го познаваш јазикот. Пробај сам да ја решиш задачата, а доколку некаде заглавиш постирај до каде си стигнал (код), и некој сигурно ќе ти помогне да продолжиш понатаму.
2. Ова изгледа како некоја домашна задача - претпоставувам затоа сеуште немаш добиено одговор.
|
|
|
17/11/2011 01:30:38
|
obi1kenobi
Joined: 18/02/2010 20:01:33
Messages: 168
Offline
|
Исто така, поздрави го професорот што ти ја даде задачата и кажи му дека пејач има 'ј' на средина
|
|
|
31/12/2011 03:26:24
|
el1temkd
Joined: 31/10/2011 21:19:45
Messages: 3
Offline
|
По подолго време ја направив задачата, ако може некој нека ја провери дали има негде грешка...
|
|
|
31/12/2011 06:34:03
|
obi1kenobi
Joined: 18/02/2010 20:01:33
Messages: 168
Offline
|
Ако јас добро ја сфатив задачата, за секоја песна жирито дава 10 гласа (значи 10 члена на жирито, секој го дава својот глас). Според тоа, гласовите за една песна се 11 int вредности, а ти колку што сфатив ги третираш како две (една од публиката и една од жирито).
Не сфаќам како ти работи кодот за наоѓање победник...
На линија 90 не треба да имаш <= туку <, затоа што ако се еднакви два елементи, џабе ќе им ги менуваш местата, само трошиш процесорско време.
Последна работа -- не знам дали професорот ве учел објектно ориентирано програмирање или само структурно, ама со една проста класичка за песната можеш овој комплициран код од 150 линии да го сведиш на 50-60 максимум, и ем попрост да биде за тестирање, ем полесен за сфаќање. Искрено, не се ни сеќавам кога последно int main() функцијата ми била 150 линии...
|
|
|
31/12/2011 20:09:21
|
MOI
Joined: 07/07/2010 16:31:48
Messages: 447
Offline
|
1. Не ми се допаѓа како си се справил со делот од задачата кој вели дека "на фестивалот учествуваат 15 пеачи". Конкретно, овие две линии:
треба да ги промениш - иако работат како што треба. Стави "int number_of_participants = 15;" и "counter < number_of_participants" (променив <= со < ). Така е многу поразбирливо. Претходно, секој нормален човек кој би го читал кодов, кога би стигнал до линијата "int number_of_participants = 14;" би помислил дека на натпреварот има 14 пеачи (што е погрешно). Знам дека и двата начина работат, ама вака е многу поразбирливо. Дополнително, кога веќе си дефинирал променлива "number_of_participants", користи ја секаде во кодот - смени ги сите места каде што имаш напишано 15 со "number_of_participants", сите места каде што имаш напишано 14 со "number_of_participants-1", итн. Така лесно може да се промени програмата да работи и со повеќе пеачи, а и полесна е за разбирање.
2. Како што кажа obi1kenobi, во датотеката за секој пеач треба да чуваш 10 int вредности за бројот на гласови од жири (а не една вредност; во твојот код - "brojnaglasoviodziri").
3. Во првиот пост си напишал дека датотеката "Sort.dat" треба да е сортирана по име и презиме, но твојата не е - како што ги читаш од влез, така и ги запишуваш во датотека. На влез не секогаш ќе ти бидат дадени имињата подредени.
4. Слично, во првиот пост си напишал дека треба да се прави валидација при внесувањето на влезните податоци - но ти не правиш никаква валидација. Проверувај дали имињата се внесени како што треба (името не може да содржи бројки, ...), дали гласовите од жирито се помеѓу 0 и 12, итн... Тука незнам до која мера да одиш со проверките (постојат многу работи кои сериозна програма би ги проверувала, а се сомневам дека тоа било целта на професорот кога ви ја дал задачата). Еве неколку примери:
- сериозна програма би проверувала дали првата буква од името и презимето е голема, а сите други мали
- сериозна програма би проверувала дали гласовите од жирито се дел од множеството {12,10,8,7,...1,0}, а не само дали се помеѓу 0 и 12 (во множеството на можен број на поени нема 11 или 9).
- сериозна програма би проверувала дали секој член од жирито дал само една 12ка, една 10ка, итн... На пример, првиот член од жирито неможе да даде 12ки на двајца натпреварувачи (Панчо ДНК не може да им даде 12ка и на Елена и на Ламбе, само на еден од нив [иако и Елена и Ламбе ќе имаат 0<=glas<=12]; Македонија не може да им даде 12ка и на Албанија и на Србија; и слично).
5. Си го искомплицирал барањето на победник. Направи три променливи "int maks_poeni", "string imePrezimePobednik" и "string imePesna", и со еден for циклус помини ги сите пеачи во датотеката, притоа проверувајќи, на секој чекор, дали одреден пеач има повеќе поени од "maks_poeni". Ако има, ажурирај ги "maks_poeni", "imePesna" и "imePrezimePobednik".
Да не спомнеше obi1kenobi никогаш немаше да ми текне (бидејќи во твојот код нема класи или нешто слично), ама сега 99% сум сигурен дека задачава е од некој предмет во кој се изучува OO програмирање - гледајќи ја структурата Пеач. Или тоа, или задачава е лоша и не чини
This message was edited 2 times. Last update was at 31/12/2011 20:18:00
|
|
|
05/01/2012 02:08:18
|
el1temkd
Joined: 31/10/2011 21:19:45
Messages: 3
Offline
|
Фала на советите, сепак ако некој може нека ги поправи грешките што сум ги направил нека поправи. Ако некој има идеа да се реши на друг начин задачата многу ќе ми помогне. Учиме Структурно Програмирање, па за тоа во програмот не треба да се употребуваат класи.
Поздрав.
|
|
|
22/03/2014 23:56:23
|
nightCoder
Joined: 22/02/2014 20:01:21
Messages: 5
Offline
|
лелее искинав живци на третиов случај како пример шо е.. ајде помагајте куку леле е работава
http://mendo.mk/Task.do?id=476
ако може и решение цело
|
|
|
23/03/2014 20:46:30
|
addictus
Joined: 08/10/2010 11:22:51
Messages: 23
Location: Куманово
Offline
|
nightCoder wrote:лелее искинав живци на третиов случај како пример шо е.. ајде помагајте куку леле е работава
http://mendo.mk/Task.do?id=476
ако може и решение цело
Да го ставеше твоето решение па да ти кажеме каде грешиш?
Инаку конкретно за третиот пример
Единствениот начин за да добиеш чоколадо со 811 коцки е тоа чоколадо да е 811х1 (бидејќи бројот 811 нема други делители). Со даденото чоколадо (810х753) не постои начин да добиеш 811х1 чоколадо.
|
Решенија на задачи - aandevski.wordpress.com |
|
|
23/03/2014 21:46:09
|
nightCoder
Joined: 22/02/2014 20:01:21
Messages: 5
Offline
|
' pomosh tuka.. se vrzav vishe
|
|
|
23/03/2014 23:04:47
|
addictus
Joined: 08/10/2010 11:22:51
Messages: 23
Location: Куманово
Offline
|
nightCoder wrote:' pomosh tuka.. se vrzav vishe
Како прво, не ја гледам причината зошто го користиш тој for циклус. Во никој од првите 4 услови не го користиш бројачот i, а петтиот услов го користиш за да го прекинеш циклусот за што нема потреба (за овој случај поточно циклусот ќе се извршува за i од 0 до kocki, потоа i<=kocki условот веќе не важи и сам се прекинува). Всушност само ги повторуваш истите 4 споредувања повеќе пати.
Следниот проблем е што користиш int. Може да добиеш проблеми со redovi*koloni за некои поголеми вредности, така да наместо int користи long long.
Без циклусот и со поголеми променливи кодот ти проаѓа на 19/20 примери. Единствениот пример каде што програмот ти паѓа е
каде што може да се добие бараниот број на коцки со чоколадо 21379х88289 додека твојот код дава -1.
Малку поголема помош (ќе оставам на тебе да си го искуцаш кодот) :
Пробај да ги најдеш сите можни начини да добиеш N број на коцки (пример за 12 коцки можеш со 1х12, 2х6, 3х4). Види дали можеш да стигнеш до некој од тие начини со едно кршење, доколку не можеш, види дали можеш да стигнеш до некој од тие начини со две кршења, доколку не можеш печати -1. (нормално, печатиш 0 доколку веќе е решена задачата).
|
Решенија на задачи - aandevski.wordpress.com |
|
|
23/03/2014 23:30:04
|
nightCoder
Joined: 22/02/2014 20:01:21
Messages: 5
Offline
|
уше деветиов заебава, не ми е јасно више се изврзав..
|
|
|
24/03/2014 00:16:41
|
addictus
Joined: 08/10/2010 11:22:51
Messages: 23
Location: Куманово
Offline
|
nightCoder wrote: уше деветиов заебава, не ми е јасно више се изврзав..
Повторно користиш циклус кој не постигнува ништо(се повторува N пати без причина и на крајот дава -1). Тука имаш некои лекции за циклуси, не би било лошо да ги повториш. Секогаш кога можеш завршувај ги циклусите со дефиниран услов во нив (на пример while(услов)) наместо да ги прекинуваш со break. Условот за 2 кршења не ти е добар, и во претходниот пост ти реков дека за тој тест пример нема да работи задачата и ти препорачав начин за решавање (кој сеуште го немаш пробано).
|
Решенија на задачи - aandevski.wordpress.com |
|
|
|