bez steigas un prātīgi. x_f funkcija par vislielākā ierakstu skaita īpašniekiem draugu lapā, pabeigta un pārredzamāka par tiem manis publicētajiem variantiem iepriekš.
########## #wizard'ā maināmie uzstādījumi ########## property int top { des = "Rakstītāju tops"; note = "Draugu lapā tiek izvadīts (ja tas ir norādīts) saraksts ar vislielākā ierakstu skaita īpašniekiem dilstošā secībā, šeit nosaki šī saraksta limitu - top 3, top 5 utml. Negatīvi skaitļi nav iespējami, minimālais ir 1"; min = 1; } property bool printeet_topu { des = "Rakstītāju topa rādīšana"; note = "Vai vēlies savā draugu lapā vispār ieraudzīt iepriekšminēto sarakstu?"; values = "true|Protams!|false|Priekš kam?"; } set top = 3; set printeet_topu = true; ######### #pati funkcija ######### function tops(Entry[] entries) "Spamertopiņš" { #galvenais masīvs, kurā glabāsies visi draugu lapā redzamo ierakstu autori var string{} rakstnieki; #pirms jebkā veikšanas masīvs tiek aizpildīts ar autoriem no katra ieraksta. #šī te lietiņa aizstāj to, kas nedarbojās (es gan nesapratu, kāpēc) x-f iepostotajā funkcijā, #tajā masīvs praktiski netika aizpildīts ar neko. autora vārds kalpo kā atslēgvārds #ierakstu skaitam, šeit visiem norādīts ierakstu skaits 0. foreach var Entry ieraksts ($entries) { var string autors = $ieraksts.poster.username; $rakstnieki{$autors} = "0"; } #katrs ieraksts tiek pārbaudīts. ja autors sakrīt ar kādu autoru no masīva, #attiecīgais masīva elements tiek palielināts par vienu vienību. foreach var Entry ieraksts($entries) { var string autors = $ieraksts.poster.username; var int raksti; foreach var string parbaude ($rakstnieki) { if ($parbaude == $autors){ $raksti = int($rakstnieki{$parbaude}); $raksti++; $rakstnieki{$parbaude} = string($raksti); } } } #sakārtošana dilstošā secībā. vispirms tiek atrasts vislielāka ierakstu skaita #īpašnieks, respektīvi, no masīva atlasīts atslēgvārds ar vislielāko elementa vērtību. var int max = 0; var string lideris; foreach var string rakstija ($rakstnieki) { if (int($rakstnieki{$rakstija}) > $max) { $lideris = $rakstija; $max = int($rakstnieki{$rakstija}); } } "<ul id='top_list'>"; print "<li>$lideris (" + $rakstnieki{$lideris} + ")</li>"; #atrasts 'uzvarētājs'. $*top pats par sevi man bija vajadzīgs, lai radītu #parastu (laikam regulārs saucas) masīvu $cycle ar elementu skaitu, kas vienāds ar $*top. #masīva elementi nav svarīgi, svarīgs ir skaits. ja $*top ir lielāks par autoru skaitu #$rakstnieki masīvā, regulārā masīva elementu skaits tiek samazināts līdz $rakstnieki #elementu skaitam. var int count = 1; var int[] cycle = 1 .. $*top; if (size $rakstnieki < size $cycle) { $cycle = 1 .. size $rakstnieki; } foreach var int top ($cycle) { if ($count == size $cycle) { } else { foreach var Entry ieraksts ($entries) { var string autors = $ieraksts.poster.username; #visi ieraksti tiek pārbaudīti. ja ieraksta autors jau ir 'uzvarētājs', #attiecīgais $rakstnieki elements tiek padarīts par 'neko', tam nav vērtības, #un to vairs neiekļauj nākamā uzvarētāja meklēšanā. if ($lideris == $autors) { $rakstnieki{$autors} = ""; } } $max = 0; foreach var string rakstija ($rakstnieki) { if (int($rakstnieki{$rakstija}) > $max) { $lideris = $rakstija; $max = int($rakstnieki{$rakstija}); } } print "<li>$lideris (" + $rakstnieki{$lideris} + ")</li>"; $count++; } } "</ul>"; } function FriendsPage::print_body { if ($*printeet_topu == true) { tops($.entries); } # tālāk visa pārējā "FriendsPage::print_body" funkcija.. foreach var Entry e ($.entries) { # .. $this->print_entry($e); # .. } }
mja, kā prakse kas tāds man visnotaļ noderētu, vienigi reizēm, prātodams par c++ mājas darbiem skolā, attopos, ka domāju s2 valodā :)
pārpublicēšanas sakarā man nav nekādu iebildumu, tikai atsauces un tādas fīčas pēc kādas tur licences nekaitētu :] to gan droši vien nemaz nevajadzēja teikt. man, patiesību sakot, ienāca prātā doma aizvākt to sarakstiņu, bet ok, lai stāv. un turpmāk droši vien derētu vairāk piedomāt pie koda internacionalizācijas, tur visi tie mainīgie un funkciju nosaukumi latviski laikam :)
ai, nē, ar kopīraitiem būs ok :)
nezinu, tāpat cilvēks, kurs nekad mūžā nav saskāries ar programmēšanu, diez vai ko sapratīs, tici man, es zinu :P hm.. un man ir pašam gadījies tā apmēram piesēsties pie latviskotā, šodien pat, neko nevaru atrast un tie tulkojumi pilnīgi smieklīgi liekas. nu jā, tad laikam visu angliski..
function EntryPage::lay_comment_loop (Comment[] incoming, Comment[] stored) : Comment[] { if (size $incoming == 0) { return $stored; } foreach var Comment c ($incoming) { $stored[size $stored] = $c; $this->lay_comment_loop ($c.replies, $stored); } return $stored; }