[Logo] Mendo Judge Discussion Board - Forums
  [Search] Search   [Recent Topics] Recent Topics   [Hottest Topics] Hottest Topics   [Members]  Member Listing   [Groups] Back to home page 
Messages posted by: MOI
Forum Index » Profile for MOI » Messages posted by MOI
Author Message
Здружението на информатичарите на Македонија, по дваесет и трети пат организира циклус на натпревари по информатика, во областа на програмирањето. Натпреварите се стремат да ги опфатат сите ученици од основното и средното образование кои имаат некакви познавања од програмирање. Програмирањето се изведува во еден од програмските јазици Pascal, C и C++.

Неколку линкчиња со информации:
      Натпревари по информатика 2012 - Правила
      Натпревари по информатика 2012 - Календар
      Дополнителни информации за циклусот натпревари 2012

Тука можете да ги дискутирате правилата, календарот...

*** Update: Заборавив да објавам вчера дека има и нова категорија во делот за тренинг - со едноставни задачи за почетници -> ЛИНК <-. Таму се наоѓаат најлесните задачи, па добро е да почнете со решавање од таму.
Прво, морам да кажам дека јас малку избрзав кога напишав "верувам дека" правилата оваа година ќе бидат слични како тие од лани . Нема да бидат слични - ќе видите во наредните денови кога ќе се објават правилата и термините за натпреварите. Договорени се неколку посериозни промени.

Конкретно, што се однесува до ова прашање, мислам дека забуната се појавува оти правилата како што беа напишани лани (ова важи и за линкот што го напиша ти) беа ОК - ама за лани. Така е бидејќи до 2010 година основците и средношколците се натпреваруваа посебно. Минатата година, бидејќи на сите основци им беше прв пат да се натпреваруваат во почетничка група (таа претходно беше само за средношколци) - никој од нив не го прекршуваше правилото и се си течеше во најдобар ред. Сега пак, правилата што ги посочив јас делуваат различно од оние што ги посочи ти.

Уште еднаш, почекајте да се објават правилата за 2012 година - ќе биде таму се јасно напишано.
nikola3103 wrote:Кога може да очекуваме информација за овогодинешниот циклус на натпревари? Во смисла кога ке почнат, кои датуми ке бидат и сл.

Комисијата за натпревари по информатика има состанок во вторник, на 07.02.2011. Тогаш ќе бидат договорени правилата, термините, итн. Потоа, до крајот на неделата, ќе бидат објавени сите информации поврзани со Циклусот натпревари по информатика 2012. Информациите ќе бидат објавени на почетната страна на системот, на форумот и по е-маил (на сите натпреварувачи кои учествувале во минатогодишниот циклус натпревари).
Сеуште нема правила за 2012 година, ама верувам дека ќе бидат слични на овие:
       http://mendo.mk/download/pravila2011.pdf

Прочитај го делот (на страна 1) после "Натпреварувачот при регистрација во системот за натпревари може да избере една од следните три групи:"
vavio wrote:од самиот тест пример кој што е прикажан се гледа кој цифри треба да се отфрлат
но мене прашањето ми беше по кој принцип треба да се отфрлат тие цифри?

По кој принцип? Прашуваш што се бара како резултат во задачата или како да ја решиш?

Ако прашуваш што се бара како резултат, одговорот е даден во самиот текст на задачата - се бара "најголемиот позитивен број кој може да се добие по исфрлање на К цифри од бројот N". Во овој случај, најголемиот број кој може да се добие по исфрлање на K=5 цифри од бројот N=666435324321 е: 6665432. Не постојат други 5 цифри кои може да се исфрлат од 666435324321 и да се добие број поголем од 6665432.

Ако прашуваш како да ја решиш задачата, погледни ги ограничувањата за N и K (1 <= N <= 2^60, 1 <= K <= 20). Можеш да ги испробаш сите комбинации на K цифри во N (N не може да има повеќе од 20 цифри, бидејки 2^60 е број со помалку од 20 цифри) и така да го пресметаш резултатот.
Има и трета опција - да се зголеми бројот на страницата за 1, т.е. да се следи она што е дадено во текстот на задачата. Таму нема ограничување за бројот на страници, туку само за страницата до која сака да дојде Трпе (100 <= P <= 99999).

А Трпе нема да оди над X ако X >= P, бидејќи смета дека копчињата '+' и '-' работат така што го зголемуваат/намалуваат бројот на страницата за 1 (како што пишува во текстот на задачата). Кога ќе сака да дојде од 99999 до 40000, ќе стисне на копчето '-' 59999 пати.

И во право си, нема шанси да се согласиме за ова.
Не ми го сфати примерот. Еве ти една стандардна задача од натпревари: имаш кола и таа учествува на рели Дакар. Локацијата каде што се одвива релито е дадено во вид на матрица ('#' се непристапни позиции, '*' се позиции по кои може да возиме). Стигни, со најмал број на чекори, од полето означено со 'S' (стартна позиција) до она означено со 'F' (finish line). Колата може да се движи само горе, доле, лево и десно (гледано во однос на елементите од матрицата). Еве пример:

Во текстот на оваа задача пишува дека колата оди "лево, десно, горе и доле" (што не е баш стандардно). Во страница пишува копчето '+' "го зголемува бројот на страницата за 1". Според мене, и двете задачи се добро дефинирани - кажуваат точно кои потези може да ги правиме.
Не можам да признаам дека сум направил превид кога сметал дека не сум направил

Според твојата логика на размислување, може сега да дојде некој и да каже "кај мене кога ќе ги притиснал + и - заедно, ме враќа на страница 100", или "кога држам 5 подолго време, ме носи на 500", или нешто слично и да бара поени за задачата. Не можеме ние да претпоставиме што се опции има во сите можни модели на телевизори (затоа и не пишува во задачата дека се работи за стандарден телевизор, туку цело време се зборува за нешто што не го познаваме - "телевизорот на Трпе"). Пак ќе кажам, доколку во задачата стоеше дека се работи за стандарден телевизор и дека копчињата работат како кај стандарден далечински управувач, ќе кажев "да, сме направиле пропуст". Ама во задачата пишува точно што прават копчињата кај телевизорот на Трпе - "кога ќе стисне на копчето '+', страницата се зголемува за 1" и тоа е тоа.

Еве кажи ми ти што е разликата од оваа задача до сите оние задачи со луѓе, коли, роботи или незнам што кои се движат по одредени куќи, игралишта, лавиринти, итн. Таму пишува "колата може да оди лево, десно, горе и доле". Мојата кола на пример може да оди и дијагонално Ако ти требаат примери на вакви задачи, можам одма да ти дадам 10-тина (од какви сакаш натпревари - национални, меѓународни, ...).
Треба да исфрлиш K=5 цифри од бројот N=666435324321, така што резултатот што ќе го добиеш е најголем можен.

Цифрите кои што треба да ги исфрлиме ги означив со bold (и ги ставив во загради):
    666(4)(3)5(3)(2)432(1)
Во задачата пишува точно што прават копчињата, цитирам:
Копчето '+' го зголемува бројот на страницата за 1, а копчето '-' го намалува бројот за 1. На почеток, Трпе се наоѓа на страница 100 и сака да стигне до страницата P.

Не пишува "копчето '-' го намалува бројот за 1, освен ако страницата не е 100, во кој случај оди на страницата 99999", или пак "копчето '-' работи како стандардното копче на далечинскиот управувач, само за 99999 страници"

Второ, кај мене телевизорот не оди на страница 99999 (или 999) кога ќе стистам на копчето '-', туку оди на последната страница за која знае дека постои (на пример 700, ако не постојат страници над 700). Тоа е уште една претпоставка што си ја направил.

Инаку, се обидуваме во задачите да дефинираме се што може да им текне на натпреварувачите (во текстот, некогаш и по повеќе пати), но може еве да се случи некој да не ја сфати задачата. За тоа постои простор за поставување на прашања - ако мислиш дека нешто не е добро дефинирано, ќе поставиш прашања за време на натпреварот и ќе си добиеш одговор.
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 програмирање - гледајќи ја структурата Пеач. Или тоа, или задачава е лоша и не чини
Можеш само да исфрлиш (избришеш) неколку цифри од бројот. Не смееш да го менуваш распоредот на цифрите. На пример, кај 12345, ќе ги избришеме првите 3 цифри, и ќе добиеме 45. Никаде во задачата не пишува дека можеш да ги прераспоредиш останатите (N-K) цифри.
Делители wrote:На стандарден излез отпечатете го бројот со најмногу делители (доколку има повеќе, отпечатете го најмалиот), и бројот на позитивни делители на тој број.

... треба да се отпечати најмалиот ( и 6 и 8 имаат по четири делители, но 6 е помало од 8 ), а не оној кој има најголем збир на делителите
Update:
      Задача "Зборови" има таков тест пример (каков што ти прикачи на форумов) - таму е даден како пример 20: http://mendo.mk/Task.do?id=169

Можеби си ги помешал тест примерите (датотеките)?!

19-тиот тест пример е:

19ti test primer wrote:e 2
16
g 1
c 1
a 3
h 5
f 4
g 3
h 7
e 4
e 7
c 3
c 4
d 4
h 6
e 5
e 6
g 5


Ги проверив (набрзинка) и другите тест примери и изгледаат ОК. Како дојде до овој влез (го симна тест примерот од тренинг делот, или...). Сигурен ли си дека гледаш во вистинската датотека (ова личи како тест пример од некоја друга задача?)
 
Forum Index » Profile for MOI » Messages posted by MOI
Go to:   
Powered by JForum 2.1.8 © JForum Team