gpt4 book ai didi

c++ - 如何对字符串进行冒泡排序?

转载 作者:行者123 更新时间:2023-11-30 04:06:28 24 4
gpt4 key购买 nike

我正在尝试从用户那里获取输入并对输入进行冒泡排序,然后输出结果。我的代码:

    #include<iostream>
using namespace std;
class bubble
{
public :

string arr[20];

//Number of elements in array
int n;

//Function to accept array elements
void read()
{
while(1)
{
cout<<"\nEnter the number of elements in the array:";
cin>>n;
if(n<=20)

break;
else
cout<<"\n Array can have maximum 20 elements \n";
}
//display the header
cout<<"\n";
cout<<"----------------------\n";
cout<<"Enter array elements \n";
cout<<"----------------------\n";

//Get array elements
for( int i=0; i<n ;i++ )
{
cout<<"<"<<i+1<<"> ";
cin>>arr[i];
}
}
//Bubble sort function
void bubblesort()
{
for( int i=1;i<n ;i++ )//for n-1 passes
{
//In pass i,compare the first n-i elements
//with their next elements
for( int j=0; j<n-1; j++)
{
if(arr[j] > arr[j+1])
{
string temp;
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;

}

}
}
}
void display()
{
cout<<endl;
cout<<"----------------------\n";
cout<<"Sorted array elements \n";
cout<<"----------------------\n";
for( int j=0; j<n; j++)
cout<<arr[j]<<endl;
}
};
int main()
{
//Instantiate an instance of class
bubble list;
// Function call to accept array elements
list.read();
// Function call to sort array
list.bubblesort();
//Function call to display the sorted array
list.display();
return 0;
}

代码运行良好,但它不接受字符串中的空格值或缩进值作为输入。有没有办法让它接受这些值?

最佳答案

您必须将 temp 的类型更改为 std::string。出于显而易见的原因,int 仅适用于整数。

如果您遇到此类编译器错误,请始终先尝试理解错误消息。为什么程序会尝试将字符串转换为整数?

然后,查看提到的行(文件名后的第一个数字)。请记住,如果您使用预处理器宏,这个数字可能会关闭。

如果你转到那一行,你会注意到它是这样的:

temp = arr[j];

回到错误消息,很明显,在这一行中,您试图将字符串值分配给整数:

integer = string;

因为您需要字符串,所以您必须查看 temp 的定义位置。往上走,您会遇到以下行:

int temp;

宾果游戏!由于您知道您将需要一个字符串(并且该变量未在其他任何地方使用),您现在只需将类型交换为 std::string 即可完成:

string temp;

关于c++ - 如何对字符串进行冒泡排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22892323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com