Kezdőoldal » Számítástechnika » Programozás » Hogyan lehet C#-ban tömböt...

Hogyan lehet C#-ban tömböt ABC-re rendezni?

Figyelt kérdés

Olyan feladatot kapta, hogy egy tömbben lévő string adatokat (neveket) kell ABC sorrende rendeznem.

string[] t = { "Kati", "Mari", "Anna", "Feri" };

int n = t.Length;


int seged;

for (int k = n - 1; k >= 0; k--)

{

for (int b = 0; b <= k - 1; b++)

{

if (t[b].CompareTo(t[b+1]) > t[b + 1].CompareTo(t[b]))

{

seged = string.Compare(t[b],t[b+1]);


}

}

}

Idáig eljutottam és nem tudom az if-be mit kéne beirni vagy hogy teljesen rossz után járok ez ügyben. Mindent megpróbáltam de nem tudom a tömb elemeit ABC sorrendbe rakni. Azt tudom, hogy a ComaperTo-val kell de a formát nem ismerem és nem tanultuk.



#Visual C# #rendezés #C# programozás #C# ABC sorrend #C# tömb sorbarendezés
2016. szept. 14. 18:17
 1/9 anonim ***** válasza:

Én mondjuk inkább a tömb sort() metódusát használnám

[link]

2016. szept. 14. 18:24
Hasznos számodra ez a válasz?
 2/9 A kérdező kommentje:
Hát csak az a baj ezt mi még nem vettük :/
2016. szept. 14. 18:27
 3/9 anonim ***** válasza:

gyanítom nem 1 soros megoldást kértek

neveket hasonlíts össze Culture alapján a string.Compare() vel

2016. szept. 14. 18:28
Hasznos számodra ez a válasz?
 4/9 anonim ***** válasza:
A string szintén egy tömb, melynek celláiban char típusú elemek vannak, így gyakorlatilag ez egy 2dimenziós tömb, mert pl a t[0] az "kati", ugyanakkor a t[0][0] már 'k' mint char elem, ezeket a karaktereket össze lehet hasonlítani az ascii kódjuk alapján, így pl. A < C = true, hiszen az A karakter ascii kódja kisebb mint a C-nek. Ezután már csak a buborék rendezést kell ráereszteni erre a tömbre.
2016. szept. 14. 18:36
Hasznos számodra ez a válasz?
 5/9 anonim ***** válasza:
58%

using System.Linq;


string[] tomb = { "Kati", "Józsi", "Pista", ... };

var Rendezett = from Current in tomb orderby Current ascending select Current;


Legalább Microsoft .NET Framework 3.5 kell hozzá.

2016. szept. 14. 20:18
Hasznos számodra ez a válasz?
 6/9 anonim ***** válasza:
100%

string[] t = { "Kati", "Mari", "Anna", "Feri" };

Array.Sort(t);

2016. szept. 14. 21:04
Hasznos számodra ez a válasz?
 7/9 anonim ***** válasza:

Gondolom ez egy iskolai feladat. A valóságban ez egy sorból állna és már le is írták, hogy a .Sort metódussal lehetne.


Viszont neked valószínűleg egy buborék rendezést kéne megvalósítani.

[link]


Itt egy megoldás:

[link]


Itt van szövegesen is, ha a kép elveszne:


static void Main()

{



string[] names = { "Kati", "Mari", "Anna", "Feri" };


Console.WriteLine("Rendezetlen tömb:");

foreach (var item in names)

{

Console.WriteLine(item);

}


string temporary;


for (int i = 0; i < names.Length; i++)

{

for (int j = 0; j < names.Length - 1; j++)

{

//A String.Compare(a, b) -1-et ad vissza, ha az "a" van előrébb az abc-ben

// 0-át ha egyenlő helyen vannak

// 1-et, ha a "b" van előrébb

if (String.Compare(names[j], names[j+1]) == 1)

{

temporary = names[j];

names[j] = names[j + 1];

names[j + 1] = temporary;

}

}

}


Console.WriteLine("Rendezett tömb:");

foreach (var item in names)

{

Console.WriteLine(item);

}


Console.ReadKey();

}

}

2016. szept. 17. 16:23
Hasznos számodra ez a válasz?
 8/9 anonim ***** válasza:

Egyébként ha szebbé akarod tenni a megoldást:

A buborék rendezés jellegéből kifolyólag a belső ciklus első végigfutása után a betűrend szerinti utolsó elem a végére kerül. A második lefutás után a második leghátsó az utolsó előtti helyre, stb. Tehát igazából a belső függvénynek csak az első lefutásnál kéne a tömb teljes hosszán végigmennie (names.Length-1), utána elég lenne mindig egyel kevesebbszer. Tehát második lefutásnál már elég lenne a names.Length-2 is.


A külső ciklusnak meg elég lenne names.Length -1, nem is tudom miért nem úgy csináltam, de most már mindegy.


[link]

2016. szept. 17. 16:40
Hasznos számodra ez a válasz?
 9/9 A kérdező kommentje:
Köszönöm szépen a válaszokat!
2016. szept. 26. 20:36

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!