Kezdőoldal » Számítástechnika » Programozás » Ezt hogy lehet megcsinálni?...

Ezt hogy lehet megcsinálni? (Programozás C++-ban)

Figyelt kérdés

Az lenne a feladat, hogy megállapítsam, melyik szám fordul elő legtöbbször a 3 kisorsolt hét számai közt, amik egy fájlban vannak.

Addig eljutottam ,hogy beolvassam az adatokat struktúrába és kiírjam, de tovább nem megy.


#include <iostream>

#include <fstream>


using namespace std;


struct lotto{

int het;

int sz1;

int sz2;

int sz3;

int sz4;

int sz5;

};


int main()

{

int i, n;


ifstream f("lotto.dat");

if(f.fail()){

cout<<"Hiba";

return 1;

}


f>>n;

lotto l[n];


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

f>>l[i].het>>l[i].sz1>>l[i].sz2>>l[i].sz3>>l[i].sz4>>l[i].sz5;

}

f.close();


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

cout<<"Het: " <<l[i].het<<"\t" << "| ";

cout<<l[i].sz1 << ", ";

cout<<l[i].sz2 << ", ";

cout<<l[i].sz3 << ", ";

cout<<l[i].sz4 << ", ";

cout<<l[i].sz5 <<endl;

}


cout<<"-------------------------"<<endl;;

//az l (lotto) tömb meg kell nézni hogy melyik számból van a legtöbb



return 0;

}



2012. szept. 20. 18:34
 1/6 iostream ***** válasza:

Algoritmus: felírjuk valahova az összes számot, végigmegyünk az heteken, és minden húzásnál a megfelelő számhoz odateszünk egy strigulát.

A végén megnézzük, melyik szám mellett van a legtöbb strigula, és ez lesz az eredmény.

Használhatod a map adatszerkezetet, az elég intuitív.

2012. szept. 20. 22:18
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:

sz1 sz2 ... helyett én tömböt használnék, de a feladat szempontjából fontos eltárolni hetes bontásba a számokat.

Én csak egyszerűen beolvasnám a számokat és a beolvasott számokkal indexelnék meg egy erre a célra kialakított tömböt, a tömb elemeit mindig az aktuálisan beolvasott számnak megfelelő tömbelemet növelnék eggyel, pl. ha a beolvasott szám 5 akkor a tömb 5.-ik elemét növelném eggyel. Aztán csak egy egyszerű maximumkeresést kell csinálni értelem szerűen.

2012. szept. 20. 22:26
Hasznos számodra ez a válasz?
 3/6 A kérdező kommentje:

Köszönöm a válaszokat, én is hasonlóra gondoltam. Azért nem tömbbel csináltam, mert így számomra átláthatóbbak a számok.


Hogy lehet minden szához hozzátenni egy strigulát?

Map-ot még nem használtam, azt inkább kerülném :)

2012. szept. 21. 14:09
 4/6 anonim ***** válasza:

"Hogy lehet minden szához hozzátenni egy strigulát?"

Olyan érzésem van hogy nem érted amit írtam. Én is elvben azt javasoltam, csak én nem strigulával, csak érteni kell az analógiát.

Ha db tömböt használok akkor db[5] tárolja hogy 5 hányszor szerepelt.

Akkor célszerű int-eket tárolni db-be, de ha mindenképp strigulázni akarod string-eket is lehet "I", "II", "III", stb. stringeket, de felesleges.

Ezek után remélem minden érthető.

2012. szept. 21. 21:25
Hasznos számodra ez a válasz?
 5/6 A kérdező kommentje:
Értem, mire gondolsz de nem tudom, hogy csináljam. Pszeudokódban el tudod küldeni a megoldást?
2012. szept. 22. 11:20
 6/6 anonim ***** válasza:

A pszeudo kód:

program lottomaxdarab;

int db[91];

db minden elemét 0-ra állítjuk

while (bemenet nemüres){

int i;

bemenet >> i; //bemenetről olvasunk i-be

db[i]++;

}


//maximum keresés

int maximum = 1;

for (i=2;i<91;i++){

if db[i]>db[maximum] then

maximum=i;

}

println maximum, " számból van a legtöbb ",db[maximum],"-szer/ször fordul elő";

endprogram;


Ha nem csak egy számból van legtöbb akkor ezek közül a legkisebbet adja vissza ez az implementáció. Meg lehetne csinálni hogy mindet visszaadja, csak gondolkodni kell hogy hogyan, nem nehéz az sem.

2012. szept. 22. 14:35
Hasznos számodra ez a válasz?

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!