Sortowanie tablicy jednowymiarowej.
Ostatnio zmodyfikowano 2015-11-23 00:34
Morksil Temat założony przez niniejszego użytkownika |
Sortowanie tablicy jednowymiarowej. » 2015-11-22 23:37:48 Cześć!
Chciałbym wykonać następujące zadanie:
Wczytać znaki do tablicy a[3*N] (N- stała) pomijając podczas wczytywania znaki inne niż małe litery (czyli wymuszając podawanie małych liter), po czym wydrukować tak utworzoną tablicę. Następnie każdą kolejną trójkę sąsiednich znaków w tej tablicy uporządkować niemalejąco i ponownie wydrukować tablicę.
Moj kod jest taki:
#include <iostream> #include <cstdlib> using namespace std; int main() { const int N=3; char tablica[3*N]; char element; for(int i=0;i<(3*N);i++) { do { cout << "Wprowadz znak do tablicy: "; cin >> element; }while(!(element>='a' && element<='z')); tablica=element; } for(int i=0;i<(3*N);i++) { cout << tablica << "\t"; } cout << endl << endl; for(int i=0;i<(3*N-1);i++) { for(int j=0;j<(3*N-1-i);j++) { if(tablica[j]>tablica[j+1]) { char tmp=tablica[j+1]; tablica[j+1]=tablica[j]; tablica[j]=tmp; } } } for(int i=0;i<(3*N);i++) { cout << tablica << "\t"; }
return 0; }
Problem tkwi w tym, że program nie sortuje mi trzech sasiadujacych ze soba znakow. Sortuje wszystkie w kolejnosci rosnacej. Prosze o pomoc i o wskazówkę co zrobic, żeby program sortowal mi tylko 3 sasiadujace ze soba elementy tablicy.
[0][1][2][3][4][5] - - - - - - <-------><-------> w taki oto sposób zeby w tych klamerkach wykonywało sie sortowanie.
|
|
Morksil Temat założony przez niniejszego użytkownika |
Problem rozwiązany. » 2015-11-23 00:34:59 Jeśli ktoś kiedyś będzie miał problem z tym zadaniem to znalazłem rozwiązanie. Zamieszczam kod:
#include <iostream> #include <cstdlib> using namespace std; int main() { const int N=3; char tablica[3*N]; char element; for(int i=0;i<(3*N);i++) { do { cout << "Wprowadz znak do tablicy: "; cin >> element; }while(!(element>='a' && element<='z')); tablica=element; } for(int i=0;i<(3*N);i++) { cout << tablica << "\t"; } cout << endl << endl; for(int i=0;i<(3*N-1);i++) { for(int j=3*N-3*(i+1);j<(3*N-1-3*i);j++) { if(tablica[j]>tablica[j+1]) { char tmp=tablica[j]; tablica[j]=tablica[j+1]; tablica[j+1]=tmp; } } } for(int i=0;i<(3*N);i++) { cout << tablica << "\t"; }
return 0; }
|
|
« 1 » |