Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Sortowanie liter

Ostatnio zmodyfikowano 2017-02-02 16:37
Autor Wiadomość
jarecki1207
Temat założony przez niniejszego użytkownika
Sortowanie liter
» 2017-01-25 14:17:37
Witam.
Mam za zadanie napisać algorytm w c++, który będzie sortował litery wpisanego imienia i nazwiska. mam jednak problem, gdyż program sortuje najpierw duże litery, a potem małe, a moim zadaniem jest to aby traktował je równo. oto mój dotychczasowy kod.
C/C++
#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

int main()
{
    string litery, imie, nazwisko;
    cout << "Podaj imie ";
    cin >> imie;
    cout << "podaj nazwisko ";
    cin >> nazwisko;
    litery = imie + nazwisko;
   
   
    for( int i = 0; i < litery.length() - 1; i++ )
    for( int j = 0; j < litery.length() - 1; j++ )
    if( litery[ j ] > litery[ j + 1 ] )
         swap( litery[ j ], litery[ j + 1 ] );
   
    cout << litery << endl << endl;
   
    system( "PAUSE" );
    return 0;
}
P-156919
karambaHZP
» 2017-01-25 14:28:20
Zastosuj tolower z <cctype>, aby wszystko co widzi algorytm było małymi literami,
Nie podałeś szczegółów sortowania.
Np. jak posortować coś takiego?
ManAna
aAaMnn?
Musisz ustalić jakiś priorytet sortowania.
P-156920
jarecki1207
Temat założony przez niniejszego użytkownika
» 2017-01-25 14:46:22
Nie zauważyłem jednej rzeczy. Musze to zrobić przez sortowanie przez wstawianie. Więc to raczej nie przejdzie. Kolejność jest ważna, najpierw duże litery, potem małe. np aaMmAm --> AMaamm. Dzięki mimo wszystko za szybką odpowiedź!
P-156922
j23
» 2017-01-25 19:18:33
Jeśli sortowanie ma uwzględniać litery diakrytyzowane, do porównań powinieneś użyć strcoll lub std::collate<char>>.
P-156936
jarecki1207
Temat założony przez niniejszego użytkownika
» 2017-01-26 11:53:47
Nie musi uwzględniać liter diakrytyzowanych. Próbowałem tolower, ale nie idzie. nie wiem dlaczego, być może coś źle robię, a nie jestem świadomy tego. Sortowało mi oddzielnie litery w imieniu i nazwisku, tak jakby posortowało mi wyrazy. Starałem się zamienić też duże na małe, a potem odwrotnie, ale wyszło bez sensu.
P-156966
j23
» 2017-01-26 14:51:44
Pokaż kod (nie zapomnij go dać w znaczniki
[cpp] kod [/cpp]
).
P-156970
michal11
» 2017-01-26 18:52:19
program sortuje najpierw duże litery, a potem małe, a moim zadaniem jest to aby traktował je równo

Kolejność jest ważna, najpierw duże litery, potem małe

To jak w końcu ma być?
P-156976
jarecki1207
Temat założony przez niniejszego użytkownika
» 2017-02-02 15:14:33
Mój kod wygląda teraz następująco:
C/C++
#include <cstdlib>
#include <iostream>
#include <string>
#include <cctype>


using namespace std;

int main()



{
    int i, j, c;
    string litery, imie, nazwisko;
   
    cout << "podaj imie ";
    cin >> imie;
    cout << "podaj nazwisko ";
    cin >> nazwisko;
    litery = imie + nazwisko;
   
    std::transform( litery.begin(), litery.end(), litery.begin(),::tolower );
   
   
    for( int i = 0; i < litery.length() - 1; i++ )
    for( int j = 0; j < litery.length() - 1; j++ )
    if( litery[ j ] > litery[ j + 1 ] )
         swap( litery[ j ], litery[ j + 1 ] );
   
   
    cout << litery << endl << endl;
   
    system( "PAUSE" );
    return 0;
}

[ \c pp ]

Moim zadaniem jest zamiana pierwszych liter imienia i nazwiska na du ż e.
P-157231
« 1 » 2
  Strona 1 z 2 Następna strona