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

Hogyan lehet C#-ban tömb XY elemét kiiratni?

Figyelt kérdés

Olyan feladatot kaptam, hogy egy 1000 db lottószelvény számait megkellett számolni, hogy 1-90 számot hányszor húzták és melyiket húzták ki a legtöbbször (maximum téltel) és az nem tudom megoldani, hogy az első 5 leggtöbbet kihúzott számot irassam ki.

Az eddig sikerült program kódja:

Random r = new Random();

int n = 1000;

int[] L = new int[n];


for (int i = 0; i < n; i++)

{

L[i] = r.Next(1, 91);

}


int[] db=new int[91];


for (int i = 0; i < n; i++)

{

db[L[i]]++;

}


int hely = 1;

for (int i = 2; i < 90; i++)

{

if(db[i] > db[hely])

{

hely = i;

}

}


for (int i = 1; i <= 90; i++)

{

Console.WriteLine("{0} - {1}",i,db[i]);

}


Console.WriteLine();

Console.WriteLine("Legtöbbször kihúzott szám: " + hely);



#Visual C# #C# programozás #c# maximum tétel #c# kiiratás #c# tömb kiiratás #c# elemek kiiratása
2016. szept. 26. 20:39
1 2
 1/11 anonim ***** válasza:
elmondod normálisan is a feladatot?
2016. szept. 26. 20:45
Hasznos számodra ez a válasz?
 2/11 A kérdező kommentje:
Azt tudja,hogy kiirja a legtöbbször kihúzott számot, és az a feladat,hogy az első 5 leggtöbbet kihúzott szám legyen kiirva
2016. szept. 26. 20:47
 3/11 |Orfeusz| ***** válasza:

A tömböt sorba tudod rendezni a


Array.Sort(tomb_neve);


paranccsal, utána már csak az utolsó 5 tagját kell kiíratnod.


int len = L.Length;

for (int i=1, i<=5, i++) {

Console.WriteLine(i + ". leggyakoribb szám: "+ L[len-i]);

}



//A kiíratásban nem vagyok biztos, sose volt a kezemben C#.

2016. szept. 26. 20:59
Hasznos számodra ez a válasz?
 4/11 |Orfeusz| ***** válasza:

Fú, most látom hogy teljesen rossz a válaszom, elnézést.


Csinálhatod úgy hogy lemásolod a db és azt rendezed, kiválasztod az 5 legnagyobbat.

Utána kikeresed az indexeiket a db tömbből,

és utána az indexeknek megfelelő értékeket az L tömbből kiírod.

2016. szept. 26. 21:08
Hasznos számodra ez a válasz?
 5/11 anonim ***** válasza:

Én két dimenziós tömböt használnék az elsőben a kihúzott számokat tárolnám a tömb második dimenziójában pedig azt az értéket ahányszor az első dimenzióban tárolt kihúzott szám ki lett húzva.


int[,] L = new int[1000,1];

Feltöltöd az első dimenzióját véletlenszerű értékekkel és közben egy darab nevű változót arra használsz hogy tárold benne azt az értéket amit majd beállítasz a második dimenzióba.


int count = 0;

for(int i = 0; i < L.GetLength(0); ++i) {

....L[i,0] = r.Next(1, 91);

....,,,,for(j = 0; j < i; ++j) {

....,,,,....if(L[i,0] == L[j,0])

....,,,,....,,,,L[i,1] = L[i,1] + 1;

....,,,,}

}


Lehet rossz az egész ritkán alkalmazom a kódolást gyakorlatban a lustaságom miatt.

2016. szept. 26. 22:56
Hasznos számodra ez a válasz?
 6/11 anonim ***** válasza:
Vagyis nem kell az a darab változó csak hozzáadsz egyet mindig és kész.
2016. szept. 26. 22:58
Hasznos számodra ez a válasz?
 7/11 anonim ***** válasza:

// Így jobb volna talán teljesítmény szempontjából:

int kisorsoltSzámokDarabja = 0;

for(int i = 0; i < L.GetLength(0); ++i) {

....L[i,0] = r.Next(1, 91);

....++kisorsoltSzámokDarabja;

....for(j = 0; j < kisorsoltSzámokDarabja; ++j) {

....,,,,if(L[i,0] == L[j,0])

....,,,,....L[i,1] = L[i,1] + 1;

....}

}

2016. szept. 26. 23:20
Hasznos számodra ez a válasz?
 8/11 anonim ***** válasza:
Hát ezt egydimenziós tömbbel eléggé felesleges szívás megoldani.
2016. szept. 26. 23:43
Hasznos számodra ez a válasz?
 9/11 anonim ***** válasza:
Látom már rossz a megoldásom.
2016. szept. 27. 13:23
Hasznos számodra ez a válasz?
 10/11 SimkoL ***** válasza:

Megoldható 'egydimenenziós tömbökkel is, de tényleg nagyobb kínlódás. Csak érdekességképpen írtam:


static void Main(string[] args)

{

Random r = new Random();

int n = 1000;

int[] L = new int[n];

int[] db = new int[91];

int[] elsok = {1, 1, 1, 1, 1};

for (int i = 0; i < n; i++) L[i] = r.Next(1, 91);

for (int i = 0; i < n; i++) db[L[i]]++;

for (int i = 1; i < 91; i++)

{

Console.Write("{0,3}", db[i]);

if (i % 10 == 0) Console.WriteLine();

}

for (int i = 1; i < 90; i++)

if (db[i] > db[elsok[0]]) elsok[0] = i;

for (int i = 1; i < 90; i++)

if ((db[i] > db[elsok[1]]) && (i != elsok[0])) elsok[1] = i;

for (int i = 1; i < 90; i++)

if ((db[i] > db[elsok[2]]) && (i != elsok[0]) && (i != elsok[1])) elsok[2] = i;

for (int i = 1; i < 90; i++)

if ((db[i] > db[elsok[3]]) && (i != elsok[0]) && (i != elsok[1]) && (i != elsok[2])) elsok[3] = i;

for (int i = 1; i < 90; i++)

if ((db[i] > db[elsok[4]]) && (i != elsok[0]) && (i != elsok[1]) && (i != elsok[2]) && (i != elsok[3])) elsok[4] = i;

Console.WriteLine("\n{0,3} - húzások: {1,3}", elsok[0], db[elsok[0]]);

Console.WriteLine("{0,3} - húzások: {1,3}", elsok[1], db[elsok[1]]);

Console.WriteLine("{0,3} - húzások: {1,3}", elsok[2], db[elsok[2]]);

Console.WriteLine("{0,3} - húzások: {1,3}", elsok[3], db[elsok[3]]);

Console.WriteLine("{0,3} - húzások: {1,3}", elsok[4], db[elsok[4]]);

Console.ReadLine();

}

2016. szept. 27. 17:41
Hasznos számodra ez a válasz?
1 2

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!