将字符串转换为数字并排序的数组
Array of strings converted into numbers and sorted
作为初学者,我试图以单词形式输入一位数,但排序并显示为数字。
输入:
七三个五个一个nil
输出为
013.57我怎么能阻止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 sortedn";
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 inputn";
}
}
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 sortedn";
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(){
//
}
words是一个大小为n的数组,这意味着单词的有效索引范围是从0到n - 1。你的代码使用了1到n的索引,所以这个
string words[n];
...
for( int i = 1; ; i++){
...
for( int i = 1; i<= n; i++ ){
if ( words[i] == "one" )
...
for ( int i = 1; i <= n; i++ )
cout<< nums[i]<<endl;
应该是这个
string words[n];
...
for( int i = 0; ; i++){
...
for( int i = 0; i < n; i++ ){
if ( words[i] == "one" )
...
for ( int i = 0; i < n; i++ )
cout<< nums[i]<<endl;
在c++数组开始0 。
- 在
void input()
中,for
中不应该有i++
,i
应该从0开始? -
void convert()
for( int i = 1; i<= n; i++ )
致命错误。既然您将单词定义为string[5]
,那么它应该从words[0]
开始到words[4]
。nums[5]
也是。
修正代码:
#include <iostream>
#include <algorithm>
#include <string>
#define n 5
using namespace std;
string words[n] = {};
int nums[n];
void input(){
cout<<"Enter in word form, the numbers to be sortedn";
for( int i = 0; i<n ; i++){
cin >> words[i];
if( words[i] == "nil" )
break;
//i++;
}
}
void convert(){
cout<<"n = "<<n<<endl;
for( int i = 0; i<n; i++ ){
if ( words[i] == "one" )
nums[i] = 1;
else if ( words[i] == "two")
nums[i] = 2;
else if ( words[i] == "three")
nums[i] = 3;
else if ( words[i] == "four")
nums[i] = 4;
else if ( words[i] == "five")
nums[i] = 5;
else if ( words[i] == "six")
nums[i] = 6;
else if ( words[i] == "seven")
nums[i] = 7;
else if ( words[i] == "eight")
nums[i] = 8;
else if ( words[i] == "nine")
nums[i] = 9;
else if ( words[i] == "zero")
nums[i] = 0;
else
cout<<"Wrong inputn";
}
}
void sort(){
sort(nums, nums + n);
for ( int i = 0; i < n; i++ )
cout<< nums[i]<<endl;
}
int main(){
input();
cout <<"after input" <<endl;
convert();
cout <<"after convert" <<endl;
sort();
system("pause");
return 0;
}
相关文章:
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 显示错误输出的简单数组排序程序
- 为什么我的排序算法会更改数组值
- 为什么我需要C++中不同的排序格式来对这个USACO代码上的数组和优先级队列进行排序
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 合并排序不排序自创建数组类 c++
- 带有枚举方向/类型的气泡排序结构数组
- 为什么指针在对二维数组进行排序时无法正常工作?
- 排序并行数组
- 如何在数组 c++ 中对字符串进行排序
- 为什么在此排序算法实现中,向量明显比数组慢?
- 如何对不在数组中的变量进行排序?
- C++数组与向量排序(在我的情况下,向量比数组慢~2.5倍(无优化))
- 按字母顺序对结构内数组变量中的名称进行排序
- 使用排序函数 c++ 对字符数组进行排序
- 使用 std::sort 对二维 c 数组进行排序
- 使用STL对用户输入数组进行排序的错误有什么解决方案吗?
- 使用 std::sort 对 C 样式的 2D 数组进行部分排序
- 数组为此合并排序函数提供了正确的输出,但向量给出了不正确的输出.出了什么问题?
- 对 0 、1 和 2 的数组进行排序