Hogy valósíthatom ezt meg c-ben?
Van egy txt fájlom számokkal egymás alatt. Egy szám többször is szerepel. Ki kellene íratnom egy másik fájlba a fájlban lévő számokat de úgy, hogy csak egyszer szerepeljenek. Hogy tudom ezt megcsinálni?
Elviekben értem: kiválasztok egy elemet és végignézem, hogy van-e egyenlő, csak tovább nemtudom megvalósítani. Talán kéne egy másik változó amibe a kiválasztott elemet rakom és ciklussal léptetek a fájlban és megfigyelem van-e vele egyenlő és ha van akkor nem íratom ki többször.
Értem tehát pl először legyen egy maximum rendezés vagy minimum az most mindegy és akkor úgy léptetésnél megfigyelni, hogy van-e egyenlő.
Ez végül is logikusabb, mintha összevissza lennének, mert így elég csak az i meg az i+1 egyes indexű elemeket összehasonlítani.
Köszi
Vagy esetleg ha nem olyan brutálisan sok a szám, akkor megcsinálhatod azt is, hogy elkezded beolvasni őket egy tömbbe és minden újabb számnál végigfutsz a tömbön, hogy szerepelt-e már benne. Ha nem, akkor beteszed, ha igen, akkor mész a következőre.
Nem lesz hatékony, de egyszerű mint egy faék.
És mi a helyzet akkor, ha kombinációkról van szó? Mondjuk 2 számból álló kombinációkról és azt akarom megnézni, hogy ez a kombináció vol-e már.
Tehát minden sor egy kombináció (T[i][2] és megakarom nézni , hogy az i. kombináció volt-e már.
Azt hogy tudom megcsinálni?
Erre is könnyedén írhatsz rendezést. A qsortnak amúgy is kell egy rendezőfüggvényt adni. Az eredeti két intet rendezett, pl így:
int compare(void* lhs, void* rhs)
{
return *(int*)(a) - *(int*)(b);
}
Akkor most így rendezel:
typedef struct
{
int x, y;
} IntPair;
int compare(void* lhs, void* rhs)
{
IntPair lhs = *(IntPair*)(lhs);
IntPair rhs = *(IntPair*)(rhs);
if (lhs.x == rhs.x)
{
return lhs.y - rhs.y;
}
return lhs.x - rhs.x;
}
Vagy ilyesmi, rég C-ztem.
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!