[ zormar @ 16.03.2007. 15:39 ] @
Na formi imam 3 labele u koje se upisuju brojevi nasumicnim redosledom. Kako ih sortirati da se upisuju u rastucem redosledu? |
[ zormar @ 16.03.2007. 15:39 ] @
[ goranvuc @ 16.03.2007. 15:50 ] @
Osnovni problem koji u tvom pitanju nije preciziran je: Odakle vuces te brojeve?
U zavisnosti od toga iz kog izvora preuzimas brojeve, bice i resenje drugacije, npr. 1) Pretpostavka: Brojevi su ti u nekom nizu - Resenje: Napravi proceduru za sortiranje brojeva u nizu, skini sa neta vec gotovu, skini sa neta biblioteku koja radi sa nizovima i ima metodu sortiranja ili pitaj ovde nekog da ti napise proceduru za sortiranje niza (inace to se uci na svakom jacem kursu iz programiranja i to kao jedna od obaveznih vezbi, tako da ce ti sigurno neko pomoci) 2) Pretpostavka: Brojevi su ti u nekom izvoru podataka kom mozes pristupiti preko ADO, DAO, RDO, XML i sl. - Resenje: Svaki od tih modela vec ima neku metodu za sortiranje podataka u setu. Dakle, odakle uzimas podatke? [ zormar @ 16.03.2007. 18:15 ] @
Brojeve sam upisujem u text boxove i onda ih prebacujem u labele gde bi ih trebalo sortirati.
label1.caption = text1.text U programu koristim ADO kontrolu. [ goranvuc @ 16.03.2007. 18:33 ] @
Nisi mi bas najjasnije odgovorio na konkretno pitanje, ali OK. Ako pretpostavimo da brojeve pre upisa u TextBox uzimas iz ADO Recordseta, pre nego sto krenes na upis brojeva u TextBox-ove pozovi Sort() metodu od Recordset-a.
[ zormar @ 16.03.2007. 18:49 ] @
Valjda cu se nekako snaci.
Hvala ti. [ whitefox @ 16.03.2007. 21:41 ] @
Ako si pocetnik, a predpostavljam da jesi, evo kod. samo se potrudi da ga detaljno analiziras!
Code: procedure Resenje; type niz = array of integer; var c,s:integer; d:niz; procedure Quicksort (var A:niz; l,h:integer); var m: integer; function Poredi(var A:niz; l,h:integer): integer; var k,i,j:integer; procedure zameni(var A:niz; s,t:integer); var b:integer; begin b:=A[s]; A[s]:=A[t]; A[t]:=b end; begin k := A[h]; i := l-1; j := h+1; repeat repeat i := i+1 until k <= A[i]; repeat j := j-1 until k >= A[j]; zameni(A,i,j) until j <= i; zameni(A,i,j); Poredi := i end; begin if l < h then begin m := poredi(A,l,h); Quicksort(A,l,m-1); Quicksort(A,m,h) end; end; begin SetLength(d, ComponentCount); s:=0; for c := 0 to ComponentCount - 1 do if Components[c] is TEdit then with TEdit(Components[c]) do begin d[s]:=strtoint(Text); s:=s+1; end; Quicksort(d,0,s-1); s:=0; for c :=0 to ComponentCount - 1 do if Components[c] is Tlabel then with TLabel(Components[c]) do begin Caption:=inttostr(d[s]); s:=s+1; end; end; [Ovu poruku je menjao Aleksandar Ružičić dana 20.03.2007. u 11:00 GMT+1] [ icobh @ 22.03.2007. 23:11 ] @
Možda nekom zatreba SortPedia. Jeste da su algoritmi pisani u Pascalu, ali ko još danas ne zna Pascal?
![]() [ mr.marvin @ 22.03.2007. 23:33 ] @
Ima mnogo algoritama za sortiranje; meni je bio potreban neki jednostavan pa sam uzeo bubble sort:
http://en.wikipedia.org/wiki/Bubble_sort Procitaj princip na osnovu kog funkcionise i za tren ces napisati nekoliko linija koda. [ Aleksandar Ružičić @ 24.03.2007. 19:03 ] @
Buuble sort jeste lak za implementaciju ali mu je vreme izvrsavanja O(n2), sto je mnogo, najbolji algoritam za sortiranje (niza) je quick sort gde je slozenost O(n log n)... Ima zanimljivih tema o algoritmima i ovde, na ES-u, recimo ova tema je odlican pocetak!
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|