laucinieks Posted October 25, 2011 Author Report Share Posted October 25, 2011 Hmm, codez, varbūt vari iemest jau gatavu kodu, ja nu gadījumā man nesanāks, lai varu izpētīt pēc tam. L. Quote Link to comment Share on other sites More sharing options...
codez Posted October 25, 2011 Report Share Posted October 25, 2011 Atvērt šo tikai tad, kad pats esi izdomājis risinājumu: http://paste.php.lv/...e28c7b?lang=cpp Quote Link to comment Share on other sites More sharing options...
laucinieks Posted October 25, 2011 Author Report Share Posted October 25, 2011 (edited) Hmm, esmu diezgan pamatīgi jau noīsinājis kodu, bet tāpat 3 punkti :D vaļā vērt un skatīties codez risinājumu vēl nav gribēšana (tas ir labi :D), tātad pašlaik kods izskatās - http://paste.php.lv/...4f4362?lang=cpp Izskatās, ka būs jādomā kā savādāk aprēķināt to skaitļu summu un reizinājumu. L. EDIT: Tiku vaļā no 2 rindiņām cipreiz - http://paste.php.lv/...fa03e6?lang=cpp EDIT2: Izskatās ka vaina bija tur, ka nebiju norādījis ja skaitlis ir 10 :)))). 10/10 punkti, un kods - http://paste.php.lv/250e31d82ad11a18c0240dcebcabad66?lang=cpp Edited October 25, 2011 by laucinieks Quote Link to comment Share on other sites More sharing options...
briedis Posted October 25, 2011 Report Share Posted October 25, 2011 funkcijā cipsum(), kas notiek, ja skaitlis ir 10? Quote Link to comment Share on other sites More sharing options...
laucinieks Posted October 25, 2011 Author Report Share Posted October 25, 2011 (edited) Heh, tieši jau pats to atradu, kaut kā visu laiku biju pārgājis tam pāri ;)! Super, labi jāskatās, kas ar nākamo. L. Edited October 25, 2011 by laucinieks Quote Link to comment Share on other sites More sharing options...
codez Posted October 25, 2011 Report Share Posted October 25, 2011 1)Aprēķinot ciparu summu, tu vari while ciklā iet tik ilgi kamēr skaitlis>0, nevis kamēr skaitlis>10, vienkārši pēdējā iterācija izdarīs to, ko tu papildus dari aiz cikla. 2)Man šķiet, ka šie mainīgo nosaukumi ir pārspīlēti. jebkurš int mainīgais ir skaitlis, tāpēc nav jēga to saukt par skaitli. aprēķināmos rezultātus var saukt par r vai rez, ja tā ir summa, tad par sum. Funkcijā, kurā ir 2 mainīgie, nav nepieciešams tos tik gari saukt, tas, manuprāt, padara kodu nelasāmāku. Tāpat arī normāli skaitās ievaddatu mainīgos saukt tā, kā tas ir uzdevumā, piemēram n arī programmā saukt par n. Quote Link to comment Share on other sites More sharing options...
laucinieks Posted October 25, 2011 Author Report Share Posted October 25, 2011 Ok skaidrs ;)! Par otro punktu, mēģināšu iegaumēt, un pielietot. L. Quote Link to comment Share on other sites More sharing options...
codez Posted October 25, 2011 Report Share Posted October 25, 2011 (edited) Vēlviena lieta, kad esi dabūjis maksimālo punktu skaitu, pamēģini kodu sakārtot: Pamēģini izņemt liekās lietas, saīsināt, padarīt vienkāršaku. Koda vietās, kur tu atkārtojies, mēģini neatkārtoties. Padomā, vai kādas vietas nevar uzrakstīt skaistāk un pareizāk, vari pat pamklēt internetā, kā citi raksta līdzīga lietas, bet domā līdzi, ne vienmēr tas, ko atrodi internetā ir labākais. Respektīvi, doma ir tāda, ka ir svarīgi izstrādāt ātru kodēšanas tehniku - iemācīties rakstīt īsu, skaistu un pareizu kodu un pats galvenais apgūt dažādu nianšu optimālos paternus. Respektīvi, atstrādāt tieši nianses (kā efektīvāk iterēt stringu, kā sadalīt skaitli ciparos, kad izmantot string, kad char masīvu, kā noteikt dalāmību, utt.), lai sacensībās varētu pēc iespējas ātrāk rakstīt gatavas programmas. Tenējoties ir jēga mēģinās katru uzdevumu izpildīt dažādos veidos, lai pats praksē redzētu, kuras metodes ātrāk uzrakstīt, saprast, mazāk kļūdu pielaiž rakstot. Līmenim kāpjot, protams, vajag atstrādāt datu struktūras, kuras piedāvā STL, tas ir set, vector, list, map, u.c. Atstrādāt STL gatavo algoritmu izmantošanu kā sort un *_heap, u.c. Edited October 25, 2011 by codez Quote Link to comment Share on other sites More sharing options...
laucinieks Posted October 25, 2011 Author Report Share Posted October 25, 2011 (edited) ok, vai ir kāda iespēja man noteikt cik ātri fails izpildas? L. + Codez via ir kaut kāda string funkcija, ar kuru vislabāk kārtot/sadalīt/labot/meklēt stringā u.t.t.? Ja ir, iemet lūdzu link uz tutorial, gribu pārskriet pāri, lai zinu ;). Edited October 25, 2011 by laucinieks Quote Link to comment Share on other sites More sharing options...
codez Posted October 25, 2011 Report Share Posted October 25, 2011 c++ strings: http://www.cplusplus.com/reference/string/string/ tur arī visas funkcijas, kā arī stringa elementiem var piekļūt līdzīgi kā masīvam s[0],s[1],...; Vēl c++ ir null terminated strings, kas ir char masīvs, ar nulli beigās: http://www.cplusplus.com/doc/tutorial/ntcs/ Quote Link to comment Share on other sites More sharing options...
laucinieks Posted October 26, 2011 Author Report Share Posted October 26, 2011 (edited) Tiku līdz uzdevumam burti, kur dabūju 6/10 punktiem. Tātad kods - http://paste.php.lv/...633f7c?lang=cpp un uzdevums - http://www.lio.lv/ol...umi.php?show=25 Pats mēģinu saprast, kas pietrūkst uzdevumā, bet pašlaik nesanāk vēl, ja ieraugāt, variet padot paslēptus hintus, ja neatradīšu paskatīšos ;)! L. EDIT: kodu palaboju uz - http://paste.php.lv/...de5dbf?lang=cpp , bet tāpat 6/10. EDIT2: Iespējams jau zinu dēļ kā tas ir tikai, tagad jāizdomā kā to novērst. Tātad, iespējams, ka tas ir dēļ tā, ka viņš nevis meklē noteikti skaitu burtus, bet piem. ir vārdi SALA AL un viņš šajā gadījumā ar find atradīs vienu L un divus A, bet vajadzētu, tikai lai viņš atrod no katra burta pa vienam burtam. Iespējams arī kļūdos par šo. Edited October 26, 2011 by laucinieks Quote Link to comment Share on other sites More sharing options...
codez Posted October 26, 2011 Report Share Posted October 26, 2011 Tā funkcija, jau tikai atrod vai viens no burtiem ir. Tev vajag pārbaudīt vai no burtiem var salikt, kas nozīmē, ka sākumā jāsaskaita cik katra burta veids ir vārdā, bet pēc tam ejot cauri otram vārdam, jāskaita burti nost līdz tie nepietiek, vai arī vārds beidzas. Quote Link to comment Share on other sites More sharing options...
laucinieks Posted October 26, 2011 Author Report Share Posted October 26, 2011 Ok, tagad esmu apjucis, jo īsti nezinu, kā pārbaudīt un saskaitīt katru burtu atsevišķi. L. Quote Link to comment Share on other sites More sharing options...
codez Posted October 27, 2011 Report Share Posted October 27, 2011 (edited) Teiksim, tu vari vārdu glabāt, kā null terminated string: char s[251]; šijā gadījumā tev s[0], būt vārda pirmais burts. Katram burtam ir kods, kurš principā ir tā burta vērtība un viņu var iegūt pārvēršot char par int. cout << (int)s[0]; jā s[0] būs 'A', tad izvadīs 65. visu burtu kodi ir latīņu alfabētā pēc kārtas, attiecīgi 'B' ir 66, utt. Tas nozīmē, ka, ja no koda atņemsi 65, tad A-Z iegūsi 0-25. Tālāk jau izveido int masīvu 0-25 elementiem, kuros glabāsies visu burtu skaits: int skaits[26]; un ej cauri burtiem un skaiti: for(int i=0;s[i];i++){ skaits[s[i]-65]++; } Otreiz ej cauri otram vārdam un skaitot pārbaudi vai burti pietiek. Otrs veids ir glabāt skaitu map datu struktūrā, bet šijā gadījumā tas būtu lieka sarežģīšana, taču mācību nolūkos būtu labi izveidot šī uzdevuma atrsinājumu ar map arī. attiecīgā ciklā ejot cauri vārdam: map<char,int> skaits; char s[251]; //... for(int i=0;s[i];i++){ skaits[s[i]]++; } EDIT: attiecīgie risinājumi: 1. variants: http://paste.php.lv/...1a2606?lang=cpp 2. variants: http://paste.php.lv/62ccacc7b7b5b3a1685f1b6f4028c777?lang=cpp Edited October 27, 2011 by codez Quote Link to comment Share on other sites More sharing options...
laucinieks Posted October 27, 2011 Author Report Share Posted October 27, 2011 (edited) Hmm, skaidrs, pameklēšu vēl ar šiem uzdevumus, lai patrenētos :). L. EDIT: Tikko izrēķināju "Dienu". Codez varbūt vari paskatīties un palabot, ja es kaut ko "neefektīvi" esmu izdarījis? Kods - http://paste.php.lv/...2f4821?lang=cpp UZD - http://www.lio.lv/ol...umi.php?show=29 EDIT 2: Un ja vari arī paskaties par naudām, vai nebija iespēja kaut ko labāk/sīkāk uzrakstīt - UZD : http://www.lio.lv/olimps/uzdevumi.php?show=32 Kods : http://paste.php.lv/4e68e83ab1bc3f9fc73c3376932bc67e?lang=cpp Edited October 27, 2011 by laucinieks Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.