Anonymní profil Pavel – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Pavel – Programujte.comAnonymní profil Pavel – Programujte.com

 

Příspěvky odeslané z IP adresy 90.177.253.–

Pavel
Visual Basic › nejvyšší hodnoty ze seznamu…
8. 7. 2009   #111610

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.

Pavel
Visual Basic › nejvyšší hodnoty ze seznamu…
8. 7. 2009   #111604

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.

Pavel
Visual Basic › nejvyšší hodnoty ze seznamu…
8. 7. 2009   #111596

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.

Pavel
Visual Basic › Přepínání hodnot mezi 1 a 0
22. 6. 2009   #110928

Velice chytré rešení ;-) díky za pomoc.

Pavel
Visual Basic › Přepínání hodnot mezi 1 a 0
21. 6. 2009   #110855

Zdravím programátory,
nemůžu rozlousknout jednoduchý logický problém. Když je splněna jednoduchá podmínka řekněme x=1 potřebuji aby y=1 (zde problém není)

If x=1 then
y=1
End If

Problém je v tom, že pokud se znova x=1 potřebuji aby se nyní y=0. Pokud bude znovu x=1 bude y=1 (opět) - potřebuji, aby se hodnota "y" přepínala mezi 1 a 0 pokaždé když je splněna podmínka x. Když jsem to zkoušel přes další podmínky ve výsledku se mi přepínání vyrušilo a y mělo např. stále honodtu 0.

Díky za každou radu,
Pavel.

 

 

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