初心者で一桁の数字をワード形式で入力しようとしているのですが、並べ替えて数字として表示します。
入力時:
セブン スリー ファイブ ワン ニル
出力は
0 1 3 5 7 最初に 0 が表示されず、num 配列に入力されないようにするにはどうすればよいですか?
#include <iostream>
#include <algorithm>
#include <string>
#define n 5
using namespace std;
string words[n];
int nums[n],size;
void input(){
cout<<"Enter in word form, the numbers to be sorted\n";
for( int i = 0; ; i++){
cin >> words[i];
if( words[i] == "nil" )
break;
}
size = sizeof words/sizeof(string);
}
void convert(){
for( int i = 0; words[i]!= "nil" ; i++ ){
if ( words[i] == "one" )
nums[i] = 1;
//
else
cout<<"Wrong input\n";
}
}
void sort(){
sort(nums, nums + size);
for ( int i = 0; i < size; i++ )
cout<< nums[i]<<endl;
}
int main(){
input();
convert();
sort();
system("pause");
return 0;
}
これは正常に機能します。単語の長さを間違えました.ソートの考慮から要素 nil (センチネルとして使用) を削除するには、サイズを 1 減らす必要がありました。このコードは問題なく動作し、意図したとおりに動作します。
//headers and std
string words[n];
int nums[n],size;
void input(){
cout<<"Enter in word form, the numbers to be sorted\n";
for( int i = 0; ; i++){
cin >> words[i];
if ( words[i] == "nil" )
break;
}
size = sizeof words/sizeof(string) - 1;//one for nil
}
void convert(){
for( int i = 0; words[i]!= "nil" ; i++ ){
if ( words[i] == "one" )
nums[i] = 1;
else if ( words[i] == "two")
//
}
}
void sort(){
sort(nums, nums + size);
for ( int i = 0; i < size; i++ )
cout<< nums[i]<<endl;
}
int main(){
//
}