Как перебрать массив указателей на другой массив символов

У меня есть один массив, содержащий chars из входного и другого массива, содержащего указатели на соответствующие chars в первом массиве. Эта часть прошла хорошо.

Но тогда я хотел бы пузырьковую сортировку char** массив (массив указателей), поэтому исходный массив остается неизменным, но что-то идет не так (текст не отсортирован).

EDIT: Please discuss only the sorting algorithmchar tab[200];//array of chars
char** t = new char*[tabLength];
//SOMETHING
....

....
int n = tabLength;//length of tab(length of the word it contains)
//TILL HERE EVERYTHING IS FINE -----------------------------------
//bubble sorting below
do{
for(int i = 0; i < n -1; i++){
if(*t[i] > *t[i+1]){
char* x = t[i];
t[i] = t[i+1];
t[i+1] = x;
}
n--;
}
}while(n>1);

cout<<"sorted input";
for(int i = 0; i < tabLength; i++)
cout<<t[i];
cout<<endl;

cout<<"original"<<tab<<endl;

0

Решение

Убедитесь, что вы распечатали значения, на которые указывают указатели:

for(int i = 0; i < tabLength; i++)
cout << *t[i];
1

Другие решения

Я просто использовал бы функциональность, уже имеющуюся в моем распоряжении в стандартной библиотеке:

#include <iostream>
#include <string>
#include <algorithm>

int main()
{
std::string original;
std::getline(std::cin, original);

std::cout << '|' << original << "|\n";

std::string sorted = original;
std::sort(std::begin(sorted), std::end(sorted));

std::cout << "Sorted  : " << sorted << '\n';
std::cout << "Original: " << original << '\n';
}

Тестовый забег:

Привет, мир, как твои дела сегодня?
Сортировка:,? Haadddeeghilllnoooooorrtuwwyy
Оригинал: Привет, мир, как ты сегодня?
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector