сортировка по алфавиту массива
Генерирую массив строк, и задача их отсортировать по алфавиту. Пытаюсь передать в функцию массив, но не пойму как это правильно сделать
UPD передать удалось, но вопрос сортировки остался
#include <iostream>
#include <string>
#include <cstdlib>
#include <cstring>
int i;
int j;
int string_count = 10;
void sort(char massive[][11]){
for (j = 0; j<string_count;j++){
for (i = 0; i<10; i++) {
//strcpy(massive[j][i],massive[j+1][i]);
}
std::cout << "sorted " << massive[j] << std::endl;
}
}
int main(){
char symbols[27] = "abcdefghijklmnopqrstuvwxyz";
char massive[string_count][11] = {0};
int random;
for (j = 0; j<string_count;j++){
for (i = 0; i<10; i++) {
random = rand()%(26);
massive[j][i] = symbols[random];
}
std::cout << "unsorted " << massive[j] << std::endl;
}
sort(massive);
return 0;
}
Ответы (1 шт):
Автор решения: Mikhailo
→ Ссылка
У вас непонятно С или С++. Если С++, то надо использовать массив строк. Уж очень двумерный массив не подходит для простой и легкой сортировки - в нем надо все время обменять не указатели, а прямо строки. Получается очень неприятное и неопрятное решение.
const int string_count = 10;
void sort(char massive[][11]) {
char tmp[11];
for (int j = 0; j < string_count; j++) {
for (int i = string_count - 1; i > j; i--) {
if (strcmp(massive[i - 1], massive[i]) > 0) {
strcpy(tmp, massive[i]);
strcpy(massive[i], massive[i - 1]);
strcpy(massive[i - 1], tmp);
}
}
std::cout << "sorted " << massive[j] << std::endl;
}
}
int main() {
char symbols[27] = "abcdefghijklmnopqrstuvwxyz";
char massive[string_count][11] = {0};
for (int j = 0; j < string_count; j++) {
for (int i = 0; i < 10; i++) {
massive[j][i] = symbols[rand() % 26];
}
std::cout << "unsorted " << massive[j] << std::endl;
}
sort(massive);
}
Вот то же самое с массивом строк:
const int string_count = 10;
int main() {
char symbols[27] = "abcdefghijklmnopqrstuvwxyz";
std::string massive[string_count];
for (int j = 0; j < string_count; j++) {
for (int i = 0; i < 10; i++) {
massive[j] += symbols[rand() % 26];
}
std::cout << "unsorted " << massive[j] << std::endl;
}
std::sort(massive, massive + string_count);
for (int j = 0; j < string_count; j++) {
std::cout << "sorted " << massive[j] << std::endl;
}
}