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. #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; } |
|
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. |
|
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ź! |
|
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>>. |
|
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. |
|
j23 |
» 2017-01-26 14:51:44 Pokaż kod (nie zapomnij go dać w znaczniki [cpp] kod [/cpp] ). |
|
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ć? |
|
jarecki1207 Temat założony przez niniejszego użytkownika |
» 2017-02-02 15:14:33 Mój kod wygląda teraz następująco: #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.
|
|
« 1 » 2 |