【发布时间】:2015-04-22 20:05:50
【问题描述】:
我正在尝试使用一个函数来对一个充满单词的 char 数组进行排序。我目前遇到的问题是,在我的 sortNames 函数中,我得到了错误,“表达式必须是可修改的左值”在下面的部分
hold = nameArr[ii];
nameArr[ii] = nameArr[jj];
nameArr[jj] = hold;
我猜这是因为我出于某种原因试图通过数组传递值。我正在努力理解引用和指针等,我想这也伤害了我。对此的任何帮助都会很棒,在此先感谢您。
这是我当前的代码...
#include <iostream>
#include <string>
using namespace std;
char nameArr[20][15]; // array to store the 20 values
int val = 0; // variable to pass values to the array
int x = 0; // loop counter outside functions
//Function prototypes
void getNames(char (&nameArr)[20][15], int &val);
void sortNames( char(&nameArr)[20][15]);
//getNames Function
void getNames(char (&nameArr)[20][15], int &val)
{
int i = 0; // loop counter
cout << "Awesome, now lets input those names...\n" << endl;
for (i = 0; i < val; i++)
{
cout << "\nNAME " << i+1 << ": " << ' ';
cin >> nameArr[i];
}
cout << "\n\n\nThese are the names that you inserted:\n" << endl;
for (i = 0; i < val; i++)
{
cout << nameArr[i] << "\n" << endl;
}
}
// sortNames function
void sortNames( char(&nameArr)[20][15])
{
int n = 15; // max length of word
int ii = 0; // loop counter
int jj = 0; // other counter
string hold; // holding array
for (int ii = 0 ; ii < n ; ii++)
{
for (int jj = ii + 1; jj < n; jj++)
{
if (nameArr[ii] > nameArr[jj])
{
hold = nameArr[ii];
nameArr[ii] = nameArr[jj];
nameArr[jj] = hold;
}
}
}
}
int main()
{
cout << "NAME SORTER!\n\nPlease enter in the amount of names you wish to enter: " << ' ';
cin >> val;
getNames(nameArr, val);
cout << "\n\n\nAlright, lets sort now..." << endl;
sortNames(nameArr);
cout << "\nHere are the results:\n" << endl;
for (x = 0; x < val; x++)
{
cout << nameArr[x] << "\n" << endl;
}
system("pause");
}
【问题讨论】:
-
您使用二维字符数组而不是字符串向量是否有原因?
-
是的,很遗憾,此作业需要满足
-
这不是一个非常 C++ 的作业,是吗?
-
也许这对你有帮助,尤其是第一个答案:stackoverflow.com/questions/4118732/…
标签: c++ arrays function sorting lvalue