String

String
2008-04-14T23:17:39+02:00
2008-04-21T14:16:27+02:00
2022-07-26T12:11:23+02:00
FriciX
van tobb stringem es abc sorendebe akrom rendezni oket de ha igy irom

If (sz1<sz2) csere(sz1,sz2)
nem mukodik jol
Mutasd a teljes hozzászólást!
Milyen string, char*, std::string vagy CString?

Szerk: barmelyiket is hasznalod, rakd oket egy Vector-ba, es hasznald a sort()-ot!
Mutasd a teljes hozzászólást!

  • Nem szóltam...
    Mutasd a teljes hozzászólást!
  • Milyen string, char*, std::string vagy CString?

    Szerk: barmelyiket is hasznalod, rakd oket egy Vector-ba, es hasznald a sort()-ot!
    Mutasd a teljes hozzászólást!
  • char* tipusu, de en ezt a sort nemnagyon ertem h h mukodik lehet mar faradt vok
    Mutasd a teljes hozzászólást!
  • Keress ra peldakat, a linkemen is talalsz! Osszehasonlitashoz meg hasznald strcmp()-t!
    Mutasd a teljes hozzászólást!
  • vagy használhatod a qsort() fv-nek egy módosítását, de ez inkább C-s megoldás:


    #include <stdio.h> #include <string.h> #include <stdlib.h> #define ELEMSZAM 5 int comparator( char **s1, char **s2 ); int main( void ) { char *elemek[ ELEMSZAM ] = { "alaplap", "lap", "alap", "c", "akap" }; int i; qsort( elemek, ELEMSZAM, sizeof(char *), (int (*)( const void *, const void * ))comparator ); for( i = 0; i < ELEMSZAM; i++ ) printf( "%d.) %s\n", i + 1, elemek[ i ] ); printf( "\n" ); return 0; } int comparator( char **s1, char **s2 ) { if( strcmp( *s1, *s2 ) < 0 ) return -1; if( strcmp( *s1, *s2 ) > 0 ) return 1; return 0; }

    Ha c++ kell, akkor (ahogy írták) inkább használd a sort()-ot:
    sort - C++ Reference
    Mutasd a teljes hozzászólást!
  • Én vagy vektorosan, ahogy klorand mondta, vagy string tömbbe szoktam rakni a szavakat/neveket, tökmind1.

    Ha nem akarsz egyelőre a vektorokkal bajlódni, akkor ez az algoritumus tuti hogy rendez...! (stringtömb felhasználásával)
    n=elemszám;
    szavak[n]-ben vannak a szavak;
    for(i=1; i<n-1; i++) { for(j=i+1; j<n; j++) { if(szavak[i]>szavak[j]) swap(szavak[i], szavak[j]); } }

    Remélem segít!
    Mutasd a teljes hozzászólást!
  • std::stringeket hasznalsz?
    Mutasd a teljes hozzászólást!
  • igen!

    siman:
    string szavak[100];
    -nak deklaralva pl.

    szerk: jah utánanéztem miért kérdezed. Igen, ez csak std::stringnél működik. Ezért a kód elején érdemes megejteni a using namespace std; sort, hogy ne kelljen mindig kiirni az std::-t!
    Mutasd a teljes hozzászólást!
  • Szorosan a témához illeszkedő kérdés, csak azért nem teszem fel külön, mert nagyon egyszerű rá a válasz. Legalábbis szerintem.

    Ha vectorba rakom az elején a szavakat, akkor a vectoros sort(myvector.begin(), myvector.end()) az elemeket a tömbömben nem cseréli fel, ugye? És azt csak iterátor segítségével tudom kiiratni, *it-t használva...

    Viszont ha simán így írom, hogy: sort(tomb, tomb+elemszam), akkor az kicsereli az elemeket is es ugy kapom vissza a tombot, hogy az első elem lesz a legkisebb a masodik a masodik...stb...tehát rendezve.

    Akkor miért célszerűbb vektorokkal rendezni, ha az elemek nem cserelődnek és a későbbi munkát ezzel nem könnyítik meg? Gondolom a gyorsasag lehet az elsődleges szempont de szeretném azért ha megerősítenél

    Sry ha nagy hülyeéget kérdezek...
    Mutasd a teljes hozzászólást!
  • Ha vectorba rakom az elején a szavakat, akkor a vectoros sort(myvector.begin(), myvector.end()) az elemeket a tömbömben nem cseréli fel, ugye?


    Hum? Ha tomb helyett vektorban tarolod el a szavakat, akkor a sort abban a vektorban rendezi oket.

    És azt csak iterátor segítségével tudom kiiratni, *it-t használva...


    Nem, az elemeket elerheted a [] operatorral is, vagy at() metodussal...

    Ezért a kód elején érdemes megejteni a using namespace std; sort


    Ez nem jo szokas, igy elveszted a nevterek elonyet!
    Mutasd a teljes hozzászólást!
  • Jaj, igen a []-ről megfeledkeztem.
    Igen, tudom, hogy komlyabb programoknál nem szabad az elején kijelölni a használandó namespace-t, de a "kis" programoknál én mindig ki szoktam tenni

    Meg egy kérdés: Vectorban el tudok tárolni structokat is? Tehát a
    vector<adatok> vektorom(lista, lista + sizeof(lista)/sizeof(adatok))
    megfelelő deklaráció? És ha vektorokban tárolom akkor hogy adom meg hogy mi szerint rendezze? Erre már külön function-s kell írni?

    Köszi az eddigieket!
    Mutasd a teljes hozzászólást!
  • Meg egy kérdés: Vectorban el tudok tárolni structokat is?


    Ja.

    Tehát a
    vector<adatok> vektorom(lista, lista + sizeof(lista)/sizeof(adatok))
    megfelelő deklaráció?


    Nem ismerem a parameterek tipusat, de ha megfeleloen mukodik, akkor az.

    És ha vektorokban tárolom akkor hogy adom meg hogy mi szerint rendezze?


    Kell egy osszehasonlito fuggvenyt irnod, mint ahogy a linkemen is csinaltak.

    Köszi az eddigieket!


    Szivesen!
    Mutasd a teljes hozzászólást!
abcd