Erre megoldás c-ben?
Irj egy paciens nevu strukturat, ami a nev nevu mezojeben egy paciens nevet
(maximum 100 karakterbol allo szoveg), szuletesi_ev nevu mezojeben pedig egy
paciens szuletesi evet (elojeles egesz szam) tarolja.
Irj egy rendez fuggvenyt, amelynek elso parametere egy a paciensek adatait
tarolo tomb, masodik parametere pedig ezen tomb merete (elojeles egesz szam).
A fuggveny allitsa eletkor szerint csokkeno sorrendbe a paciensek tomb elemeit.
Amennyiben ket, vagy tobb paciens eletkora megyegyezik, akkor a rendezes tartsa
meg az eredeti sorrendet. (Termeszetsen az elemeket ilyenkor is a megfelelo
sorrendbe kell allitani csak az azonos eletkoru paciensek kozotti sorrend ne
valtozzon az eredetihez kepest.)
Egyszeruen nem jut eszembe hogy kellene..
typedef struct paciens{
char nev[100];
int szuletesi_ev;
}paciens;
void rendez(paciens paciensek[], int n) {
int i;
for(i=0;i<n;i++){
if(i ==paciensek[i])
ezután?
Megnézed a születési dátumot és ha = akkor semmi sem történik, a feltétel csak akkor hajtódik végre, ha születési dátumok eltérnek.
A klassikus rendezés (ami legkevésbé hatékony de leírni legegyszerűbb) következő képpen működik:
ciklus i megy 0-tól n -1 -ig
ciklus j megy i+1 -től n-ig
ha tomb[i]>tomb[j] akkor csere(tomb[i],tomb[j]
Az az if nem lesz jó szerintem.
Ajánlok egy ilyen linket :
ui.: Nem értem suliban miért magyarul akarnak fv neveket, nagyon szokatlan.
A #2 által linkelt egyszerű buborékrendezés bőven elég, és nagy erénye, hogy jól átlátható a működése. Az esetedben annyi a különbség, hogy egyszerű int tömbelemek helyett a struct-elemek megfelelő mezőit vizsgálod, például
if (t[i] > t[i+1])
helyett valahogy így:
if (paciens[i].szuletesi_ev > paciens[i+1].szuletesi_ev)
Egyébként viszont, ahogy látom, a feladat azt meséli el nagy körülményesen, hogy egy teljesen hétköznapi szám-sorbarendezés során hogyan ne csinálj semmiféle szokatlan dolgot.
„Csakhamar megcsináltuk a kísérlet előkészületeit. A szoba közepére húztuk az asztalt oly módon, hogy az nem érintkezhetett a többi bútorral. A székeket gondosan a falak körül helyeztük el, úgy, hogy kettő ne kerüljön ugyanarra a helyre, hanem legfeljebb egymás mellett álljanak, míg a képek és tapéták teljesen ugyanabban a helyzetben maradtak. A tapétákra különösen vigyáztunk, sehol nem szedtük le őket a falról, valamint az ablaküveget se szedtük ki.”
(Stephen Leacock, Karinthy Frigyes fordításában)
Bocs, rosszul írtam, mert a paciens a típusnév, a tömböd neve paciens𝐞𝐤[]. Tehát:
if (paciensek[i].szuletesi_ev > paciensek[i+1].szuletesi_ev) {stb.}
A többi stimmel.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!