Forum » Programiranje » [C#]Urejanje po abecedi
[C#]Urejanje po abecedi
abyssus ::
Imam polje, v katerem je par besed. Rad bi jih uredil po abecedi.
Moja koda:
Moja ideja:
Najprej bi besede uredil po prvi črki, potem po drugi črki in tako naprej. Ampak dobim napako IndexWasOutOfRange. Lahko kdo malce pomaga? :)
Moja koda:
for (int i = 0; i < stevec; i++) { for (int j = 0; j < polje[i].Length; j++) { if ( (System.Convert.ToInt32(polje[i][j])) > (System.Convert.ToInt32(polje[i+1][j])) ) { string temp = polje[i]; polje[i] = polje[i + 1]; polje[i + 1] = temp; } } }
Moja ideja:
Najprej bi besede uredil po prvi črki, potem po drugi črki in tako naprej. Ampak dobim napako IndexWasOutOfRange. Lahko kdo malce pomaga? :)
gendale ::
najprej si poglej na wikipedii algoritme za urejanje:
Sorting algorithm @ Wikipedia (najenostavnejši za napisat je bubble sort, je pa tud v večini primerov neoptimalen)
pol si pa poglej še kako primerjaš stringe:
http://msdn.microsoft.com/en-us/library...
Sorting algorithm @ Wikipedia (najenostavnejši za napisat je bubble sort, je pa tud v večini primerov neoptimalen)
pol si pa poglej še kako primerjaš stringe:
http://msdn.microsoft.com/en-us/library...
seznam zanč moderatorjev in razlogov da so zanč
http://pastebin.com/QiWny5dV
gor je mavrik apple uporabniček (mali možgani in mali penis)
http://pastebin.com/QiWny5dV
gor je mavrik apple uporabniček (mali možgani in mali penis)
abyssus ::
1. Kot vidiš sem uporabil bubble sort
2. To z primerjanjem stringov mi ni jasno niti malo. :S
OK, mi je uspelo naredit. :)
2. To z primerjanjem stringov mi ni jasno niti malo. :S
OK, mi je uspelo naredit. :)
Zgodovina sprememb…
- spremenilo: abyssus ()
joze67 ::
Kar si povedal in kar si skodiral ni isto.
Kot prvo, v C# bo vsak uporabil kak Array.Sort()
No, če pa že hočeš zavihati rokave (kar ni slabo), pa:
Tvoja notranja ("j") zanka vsakič, ko je izpolnjen pogoj, zamenja i-to i i+1 polje. npr polje[i]="bab" in polje[i+1]="aba". Ko je j=0, primerjaš 'b' (97) in 'a' (96) - mimogrede, C# zna primerjati tudi znaka sama in ni nobene potrebe po pretvarjanju v int - in zamenjaš. Sedaj je v polju "aba" pred "bab", j=1 in glej! spet primerjaš 'b' in 'a' in spet zamenjaš. Spet je kot na začetku "bab" na i-tem mestu in "aba" za njim, j pa je sedaj 2 in ah ne, spet primerjaš 'b' in 'a' in spet zamenjaš. Skratka, zmeda, katere verjetno nisi hotel.
Če pa je i-ti niz daljši od naslednjega, boš hotel "manjkajoče" znake vseeno prebrati in boš dobil to, kar si dobil.
Prav bi ti pa delalo, če bi notranjo for zanko preprosto pozabil, if pa zapisal if(polje[i]>polje[i+1]) {...}. Pa še potem ti bo šlo vse po zlu, če je stevec število elementov v polju - ker boš pri zadnjem spet primerjal z neobstoječim naslednjim.
Kot prvo, v C# bo vsak uporabil kak Array.Sort()
No, če pa že hočeš zavihati rokave (kar ni slabo), pa:
Tvoja notranja ("j") zanka vsakič, ko je izpolnjen pogoj, zamenja i-to i i+1 polje. npr polje[i]="bab" in polje[i+1]="aba". Ko je j=0, primerjaš 'b' (97) in 'a' (96) - mimogrede, C# zna primerjati tudi znaka sama in ni nobene potrebe po pretvarjanju v int - in zamenjaš. Sedaj je v polju "aba" pred "bab", j=1 in glej! spet primerjaš 'b' in 'a' in spet zamenjaš. Spet je kot na začetku "bab" na i-tem mestu in "aba" za njim, j pa je sedaj 2 in ah ne, spet primerjaš 'b' in 'a' in spet zamenjaš. Skratka, zmeda, katere verjetno nisi hotel.
Če pa je i-ti niz daljši od naslednjega, boš hotel "manjkajoče" znake vseeno prebrati in boš dobil to, kar si dobil.
Prav bi ti pa delalo, če bi notranjo for zanko preprosto pozabil, if pa zapisal if(polje[i]>polje[i+1]) {...}. Pa še potem ti bo šlo vse po zlu, če je stevec število elementov v polju - ker boš pri zadnjem spet primerjal z neobstoječim naslednjim.
abyssus ::
Ja, sem ugotovil ter zadevo popravil. Sem pa pozneje tudi našel Array.Sort(). Nisem vedel, da to obstaja.
Hvala za odgovore. :)
Hvala za odgovore. :)
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Programski jezik C- pomočOddelek: Programiranje | 1694 (1612) | alexa-lol |
» | [C#] pomoc pri vpisu elementov v listBoxOddelek: Programiranje | 1294 (1209) | keworkian |
» | [c++] bubblesortOddelek: Programiranje | 3141 (3141) | strictom |
» | C++ SortiranjeOddelek: Programiranje | 1109 (1064) | CCfly |
» | Bubble sortOddelek: Programiranje | 1536 (1428) | OwcA |