Nejvyšší hodnoty ze seznamu proměnných – Visual Basic – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Nejvyšší hodnoty ze seznamu proměnných – Visual Basic – Fórum – Programujte.comNejvyšší hodnoty ze seznamu proměnných – Visual Basic – Fórum – Programujte.com

 

Pavel
~ Anonymní uživatel
383 příspěvků
8. 7. 2009   #1
-
0
-

Zdravím programátory a nadšence,
snad se najde někdo kdo mi rozšíří obzory v mé problematice.

Mám 24 proměnných (cislo1, cislo2, cislo3,... cislo24),
Timer přičítá těmto proměnným v každém intervalu různé jednotky a to v závisloti na splněných podmínkách (zde nezmiňuji, není potřeba).
(např. po 20 cyklech cislo1 = 5, cislo2 = 121, cislo3 = 0, cislo4 = 0,... cislo24 = 35) .

Těchto 24 proměnných potřebuju každý cyklus Timeru seřadit vzestupně do řady (s řadou budu dále pracovat).

Nyní mám další proměnnou x (která podle splněných podmínek nabýva hodnot 0,1,2,...6).

Když bude x=1 potřebuji aby script rozpoznal poslední proměnnou na konci řady seřazené podle velikosti (tzn. pozná nejvyšší číslo z 24 proměnných), když bude x = 0 samozřejmě script nic nevyhledává.

Pokud bude nejvyšší proměnná např. cislo8, potřebuji přidat proměnné cislo8stat hodnotu 1 ( proměnných cisloXstat je také 24 - nabývají pouze hodnot 1 a 0).

Pokud je proměnná cislo8stat = 1, je proměnná cislo8 odstraněna z řady 24 proměnných (v řadě je nyní 23 proměnných) dokud proměnná cislo8stat nenabyde opět hodnoty 0 (tehdy je proměnná cislo8 přidána zpět do řady proměnných seřazené podle velikosti).

Nyní trochu komplikace pokud bude x = 3. Tzn. script vybere z řady 24 proměnných seřazených vzestupně poslední 3 proměnné ( = 3 nejvyšší hodnoty z řady), po rozpoznání těchto třech proměných nastavý script "příbuzným" proměnným "stat" hodnotu 1 a původní proměnné jsou všechny 3 odstraněny z řady (v řadě pro další cykly zbývá pouze 21 proměnných) dokud hodnoty stat nenabydou opět hodnoty 0 (kterou určují moje již hotové scripty).

Př. x = 3, nejvyšší 3 proměnné = cislo24, cislo18, cislo13. Následně cislo24stat = 1, cislo18stat = 1, cislo13stat = 1 načež jsou cislo24, cislo18 a cislo13 odstraněny z řady dokud se jejich příslušné hodnoty cislo24stat, cislo18stat a cislo13stat nerovnají opět 0.

V některých případech jsou proměnné cisloX totožné (např. nabydou hodnoty 81 tři proměnné, hodnota 81 je zároveň nejvyšší), nyní zvolme proměnnou x = 2 - nyní je na systému, které 2 ze 3 proměnných umístí na konec řady.

Netuším, zda je potřeba řadit proměnné do vzestupné řady nebo je jednodušší naprogramovat kód který z nich najde rovnou např. 5 nejvyšších (každopádně musí být v řadě, ze kterých se aktivní odečtou).

Jsem kóder laik a programuji pro zábavu, snažím se prokázat že z náhodných čísel nejde obejít statistiku a pravděpodobnost.

Díky,
Pavel.

Nahlásit jako SPAM
IP: 90.177.253.–
DragonBehemont0
Super člen
8. 7. 2009   #2
-
0
-

Na seřazení prvků v poli existuje funkce Array.Sort(). Zbytek je už jen o naprogramování potřebných funkcí.

Nahlásit jako SPAM
IP: 212.77.163.–
Nemusíte vědět vše, stačí jen, když víte, kde to najít, a jak to použít. Naučíte se to právě tím používáním ;-)
Pavel
~ Anonymní uživatel
383 příspěvků
8. 7. 2009   #3
-
0
-

Díky, zkusím pohledat informace o této funkci ;-)
Seřadit bych je snad i dokázal, taktéž bych dokázal najít největší číslo, ale nedokážu následně toto číslo odstranit z řady aby se sním nadále nepočítalo.

Nahlásit jako SPAM
IP: 90.177.253.–
Pavel
~ Anonymní uživatel
383 příspěvků
8. 7. 2009   #4
-
0
-

Tak nevím proč, ale v mém VB6 mi to funkci Array.Sort() nechce vzít nebo nevím jak ji použít. Napsal jsem si na seřazení vlastní funkci. Pro ukázku posílám jen 5 hodnot.

Dim Pocet As Integer 'definice proměnných
Dim A, B As Integer
Dim cislo1, cislo2, cislo3, cislo4, cislo5 As Integer
Dim cislo1stat, cislo2stat, cislo3stat, cislo4stat, cislo5stat As Integer

Pocet = 5 'počet jednotek v poli - pro příklad 5, poté zvolím 24

ReDim Pole(Pocet)

cislo1 = 11 'aktuálně zvolené hodnoty proměnných cisloX, které se jinak v reálu generují
cislo2 = 24
cislo3 = 0
cislo4 = 6
cislo5 = 99

cislo1stat = 0 'pokud je proměnná cisloXstat = 0 je hodnota proměnné cisloX zobrazováno v poli, nabývají hodnot 1 a 0
cislo2stat = 0
cislo3stat = 0
cislo4stat = 0
cislo5stat = 0

If cislo1stat = 0 Then
For A = 1 To 1
Pole(1) = cislo1 'ke každému z 5ti polí přidávám příslušnou proměnnou cisloX
Next A
Else
Pole(1) = 0 'pokud je cisloXstat ruzné od 0, pole(1) má hodnotu 0 a je umístěno na konec řady
End If

If cislo2stat = 0 Then
For A = 1 To 1
Pole(2) = cislo2
Next A
Else
Pole(2) = 0
End If

If cislo3stat = 0 Then
For A = 1 To 1
Pole(3) = cislo3
Next A
Else
Pole(3) = 0
End If

If cislo4stat = 0 Then
For A = 1 To 1
Pole(4) = cislo4
Next A
Else
Pole(4) = 0
End If

If cislo5stat = 0 Then
For A = 1 To 1
Pole(5) = cislo5
Next A
Else
Pole(5) = 0
End If

For A = 1 To Pocet
For B = 1 To Pocet
If Pole(A) < Pole(B) Then ' seřazení podle velikosti
cislo = Pole(A)
Pole(A) = Pole(B)
Pole(B) = cislo
End If
Next B
Next A

For A = 1 To Pocet
Print Pole(A) 'zobrazení již seřazené řady
Next A

Bohužel nepřišel jsem na to, jak např. když potřebuji zvolit 3 poslední čísla v řadě nastavit jejich "příbuzným proměnným" cisloXstat hodnotu 1 (následně mi už můj kód proměnné cisloX z řady odstraní). Jedná se mi pouze o část kódu který z pole vybere podle proměnné "y" příslušný počet posledních hodnot a proměnným stat nastaví 1.

Díky za každou radu.

Nahlásit jako SPAM
IP: 90.177.253.–
DragonBehemont0
Super člen
9. 7. 2009   #5
-
0
-

To Pavel : Aha, ty děláš ve VB6? Hmm, tak to nevím, já dělám ve VB9 (Visual Basic.NET). A ta funkce Array.Sort() je nejspíše součástí .NET Framework-u. :-( -nejsem si jist. Leda to protřídit nějakou vlastní funkcí, v praxi existuje několik metod (probublávání, atd.).

Nahlásit jako SPAM
IP: 212.77.163.–
Nemusíte vědět vše, stačí jen, když víte, kde to najít, a jak to použít. Naučíte se to právě tím používáním ;-)
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 12 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý