C nyelv, tömbrendezés?
Szisztok! a következő a probléma: adott a mez tömb ami az azonosítóm a programban, s hozzákapcsolódik a név és a születési év. A programom kész és lefut, márcsak rendezni kéne, ezt megis oldottam már, de a neveket egyszerűen nem tudom sehogysem úgy, hogy azok kapcsolódjanak a mezhez és a születési évhez. Bemásoltam a listázós programrészletet, valaki tudna segíteni benne?
case 5:
printf("Listazas\n");
printf("Mezszam\tNev\tSzuletesi ev\n");
int csere;
for(i=db-1; i>0; i--)
for(j=0; j<i; j++)
if(mez[j]>mez[j+1]){
csere=mez[j];
mez[j]= mez[j+1];
mez[j+1]=csere;
csere=ev[j];
ev[j]= ev[j+1];
ev[j+1]=csere;
}
for(i=0;i<db; i++)
printf("%d %s %d\n", mez[i], nev[i], ev[i]);
break;
(A) Használj structokat és azokat cserélgesd, így lesz elegáns.
(B) Amikor a mez-ben cserélsz, cserélj a többi tömbben is. Az évnél már megoldottad, a névnél is ugyanezt kell csinálni.
> gyanígy meg nemtudom a név tömböt, mert az char-ként van deklarálva :(
Akkor deklarálj egy char típusú csere változót is, mondjuk charCsere néven.
Nem értem, mi nem megy az strcpyn. Van internet, megnézed az első google találatot, megmondja, hogy úgy kell használni: strcpy(honnan, hova);
Ha a név c string, márpedig a kiíratás alapján az, akkor ezt használod a cserénél értékadás helyett. Már csak annyit kell tudni, hogy mekkora a leghosszabb név, vagy mekkora lehet (mekkora a név mérete). Ha ez N darab, akkor így megy:
char nevcsere[N];
strcpy(nevcsere, nev[j]);
strcpy(nev[j], nev[j+1];
strcpy(nev[j+1], nevcsere);
Struct nélkül viszont tényleg egy kalap sz*r az egész, leírni sem érdemes, de a tanár tudja..
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!