Usporiadanie retazcov podľa veľkostí // C++

Programovacie jazyky, rady, poradňa...
Fata! ChaoS
Star
Star
Používateľov profilový obrázok
Príspevky: 650
Registrovaný: 12 apr 2006, 20:23
Bydlisko: Tvrdošovce
Kontaktovať používateľa:

Usporiadanie retazcov podľa veľkostí // C++

Príspevok od používateľa Fata! ChaoS »

Nazdar potreboval by som nejaký program, ktorý zoradí reťazce podľa veĺkosti.
Ale tých reťazcov je N počet.

Zoberme, že máme tri reťazce
gdfgdfad
asdasd5sdf56s
54asd

a potreboval by som ich takto zoradiť(vypísať):
54asd
gdfgdfad
asdasd5sdf56s

Prosím pomôžte.
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

tie retazce su v poli??
funckia strlen() ti daco hovori?
vies nejaky triediaci algoritmus? mas nejaky ktory chces pouzit?
Fata! ChaoS
Star
Star
Používateľov profilový obrázok
Príspevky: 650
Registrovaný: 12 apr 2006, 20:23
Bydlisko: Tvrdošovce
Kontaktovať používateľa:

Príspevok od používateľa Fata! ChaoS »

Hej, retazce sú v poli a jasne, poznám StrLen, lenže nemám ten triediaci algoritmus.
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

napr qsort()

a nieco zakladneho (bubble sort)

Kód: Vybrať všetko

for (i=0; i<n-1; i++) {
  for (j=0; j<n-1-i; j++)
    if (a[j+1] < a[j]) {  /* compare the two neighbors */
      tmp = a[j];         /* swap a[j] and a[j+1]      */
      a[j] = a[j+1];
      a[j+1] = tmp;
  }
}
vies to pouzit na tvoje ucely, ci aj to ti treba napisat?
Fata! ChaoS
Star
Star
Používateľov profilový obrázok
Príspevky: 650
Registrovaný: 12 apr 2006, 20:23
Bydlisko: Tvrdošovce
Kontaktovať používateľa:

Príspevok od používateľa Fata! ChaoS »

Spravil som to nasledovne

Kód: Vybrať všetko

 for (int i=0; i<n-1; i++) { 
        for (int j=0; j<n-1-i; j++){ 
            if (strlen(retazce[j+1]) < strlen(retazce[j])) {
               tmp = retazce[j];        
               retazce[j] = retazce[j+1]; 
               retazce[j+1] = tmp; 
            } 
         }
    }
ale píše to chybu ohľadom toho strlen, že by to nemoholo byť v podmienke alebo čo je tam nesprávne?

no matching function for call to `strlen(std::string&)'
candidates are: size_t strlen(const char*)

P.S. knihovna string je zahrnutá.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Tá premenná retazce je akého typu? Ak je to C++ string, tak tam nemôžeš použiť strlen.
Fata! ChaoS
Star
Star
Používateľov profilový obrázok
Príspevky: 650
Registrovaný: 12 apr 2006, 20:23
Bydlisko: Tvrdošovce
Kontaktovať používateľa:

Príspevok od používateľa Fata! ChaoS »

Ale je, a tak čo s tým? Je nato nejaká iná funkcia ako Strlen alebo musím zmeniť typ?
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Použi retazec[j].length()
Fata! ChaoS
Star
Star
Používateľov profilový obrázok
Príspevky: 650
Registrovaný: 12 apr 2006, 20:23
Bydlisko: Tvrdošovce
Kontaktovať používateľa:

Príspevok od používateľa Fata! ChaoS »

Díky, program sa vydaril. Moc Vám ďakujem ešte raz :wink:
Napísať odpoveď