アルファベット順に単語のリストを並べ替える方法を理解しようとしています。私が今作成したコードは、各単語が1文字だけの場合にのみ、正しく並べ替えます。もっと手紙に移動すると、それは失敗します。これを解決する手助けができますか?おかげバブルソート2d配列はiostreamのみを使用してアルファベット順にソートされますか?
は私の入力ファイルは、次のとおりです。
Emma
Liam
Dill
Bill
Kimm
Jacks
John
Hats
Julia
Jill
コード:
#include <iostream>
#include <fstream>
using namespace std;
void sort(char input[10][25], int size);
int main(){
char input[10][25] = {"Emma", "Liam", "Dill", "Bill", "Kimm", "Jacks", "John", "Hats", "Julia", "Jill"};
sort(input,10);
cout << "Sorted:\n";
for(int i = 0; i < 10; i++){
cout << input[i];
}
return 0;
}
void sort(char input[10][25],int size){
char temp;
for(int k = 0;k < 10;k++){
for(int i = 0; i < 9; i++){
for(int j = 0; j < 24; j++){
if(input[i][j] > input[i+1][j]){
temp = input[i][j];
input[i][j] = input[i+1][j];
input[i+1][j] = temp;
}
}
}
}
}
ヘルパー機能から始めることをおすすめします。 (1)2つの文字列を比較して、辞書的に前に来る文字列を調べる関数。 (2)配列内の2つの文字列をスワップして、正しい順序で配置する機能。 – AffluentOwl
'' John "" Hats "'カンマがないので、初期化されていない 'input [9] '要素を読み込もうとするとUBが後で発生します。 – Raindrop7