C++ C++;对2D字符数组进行气泡排序
这个问题是关于我为作业编写的代码,所以是的,我必须使用冒泡排序,是的,我必须使用数组 好吧,我正在做一维数组的气泡排序,但尝试对二维数组进行排序让我很伤心 我想做的是按字母顺序排列一张名单(如乔、鲍勃、贝蒂、杰克)。使用下面的代码,程序尝试对事物进行排序(名称四处移动),但通常仅部分正确C++ C++;对2D字符数组进行气泡排序,c++,arrays,multidimensional-array,bubble-sort,alphabetical,C++,Arrays,Multidimensional Array,Bubble Sort,Alphabetical,这个问题是关于我为作业编写的代码,所以是的,我必须使用冒泡排序,是的,我必须使用数组 好吧,我正在做一维数组的气泡排序,但尝试对二维数组进行排序让我很伤心 我想做的是按字母顺序排列一张名单(如乔、鲍勃、贝蒂、杰克)。使用下面的代码,程序尝试对事物进行排序(名称四处移动),但通常仅部分正确 #include <iostream> #include <fstream> using namespace std; void AlphaSort(char [][50]); void
#include <iostream>
#include <fstream>
using namespace std;
void AlphaSort(char [][50]);
void GetInput(char [][50]);
void PrintArray(char [][50]);
int main()
{
char name[4][50];
cout << "Please enter 4 names:\n";
GetInput(name);
cout << endl << "The following names were received:\n";
PrintArray(name);
cout << endl << "The names will now be sorted.\n\n"
<< "Calling Sort Function....\n";
AlphaSort(name);
cout << endl << "The sorted name order is now:\n";
PrintArray(name);
return 0;
}
void GetInput(char name[][50])
{
int i;
for(i=0; i<4; i++)
cin.getline(name[i], 50);
}
void PrintArray(char name[][50])
{
int i;
for(i=0; i<4; i++)
cout << name[i] << endl;
}
void AlphaSort(char name[][50]) //I'm pretty sure the problem is in here.
{
int Nnames = 4, pass, column, row, letter, sorted;
char temp[50];
cout << "Sorting Function Successfully Called...\n"
<< endl << "Names recieved by sort function:\n";
PrintArray(name);
//Specifically in this attempt at a bubble sort.
for(pass=0; pass<(Nnames-1); pass++)
{
for(row=0; row<(Nnames-pass-1); row++)
{
for(column=0, sorted=0; sorted==0; column++)
{
if(name[row][column]>name[row+1][column])
{
for(letter=0; letter<50; letter++)
temp[letter] = name[row][letter];
for(letter=0; letter<50; letter++)
name[row][letter]= name[row+1][letter];
for(letter=0; letter<50; letter++)
name[row+1][letter] = temp[letter];
sorted = 1;
}
else if (name[row][column] == name[row+1][column]);
}
}
}
cout << endl << "Name order post sort:\n";
PrintArray(name);
}
#包括
#包括
使用名称空间std;
无效字母排序(字符[][50]);
void GetInput(char[][50]);
void printary(char[][50]);
int main()
{
字符名[4][50];
cout我的问题似乎在于if语句没有解决它已经处于正确顺序的可能性,这使得它循环,直到后来找到一个它想要切换的字母。固定代码如下所示:
void AlphaSort(char name[][50])
{
int Nnames = 4, pass, column, row, letter, sorted;
char temp[50];
cout << "Sorting Function Successfully Called...\n"
<< endl << "Names recieved by sort function:\n";
PrintArray(name);
for(pass=0; pass<(Nnames-1); pass++)
{
for(row=0; row<(Nnames-pass-1); row++)
{
for(column=0, sorted=0; sorted==0; column++)
{
if(name[row][column]>name[row+1][column])
{
for(letter=0; letter<50; letter++)
temp[letter] = name[row][letter];
for(letter=0; letter<50; letter++)
name[row][letter]= name[row+1][letter];
for(letter=0; letter<50; letter++)
name[row+1][letter] = temp[letter];
sorted = 1;
}
else if (name[row][column]<name[row+1][column])//This is the fix.
sorted = 1;
}
}
}
cout << endl << "Name order post sort:\n";
PrintArray(name);
}
void AlphaSort(字符名[][50])
{
int Nnames=4,通过、列、行、字母、排序;
煤焦温度[50];
有人问过排序的目的是什么吗:for(column=0,sorted=0;sorted=0;column++)我不知道如何在需要的时候让它按字母顺序排在第一个字符之后,所以我试着这么做。所以理论上,它会循环,直到它决定名字被排序,或者更确切地说,它会循环,直到它发现不再相等的字母。这是为了像哈里和哈米这样的名字,不会在冲浪板上排序编写另外两个函数(假设您不能使用标准库函数)。一个用于比较两个字符串以确定其相对顺序的函数,另一个用于交换两个字符串。请确保这些函数正常工作,气泡排序函数将更易于调试。我会将字符串比较函数分离为它自己的函数。然后,在函数中,您可以只获得“这是大还是小”,不必担心排序代码中的实际“大还是小”问题,这可能会让事情变得混乱。不过,我相信有人会在一秒钟内指出您的确切错误。:D