我想按字母顺序排序名称。我一直在网上寻找一些例子,我修改了一些我发现的代码
#include <regex>
#include <ctime>
using namespace std;
int main() {
double prev = 0;
for (int i=10000; ; i*=2) {
clock_t t0 = clock();
regex_match("", regex(".{" + to_string(i) + "}"));
double t = double(clock() - t0) / CLOCKS_PER_SEC;
printf("%7d %7.3f seconds (factor %.3f)\n", i, t, prev ? t / prev : 1);
prev = t;
}
}
第24行#include<iostream>
#include <cstring>
#include <string>
using namespace std;
void main()
{
char* str[]{"john", "mike", "alex", "rick", "chris"};
char* temp[] = {"temp"};
int i, j, z;
bool status = true;
if (status)
{
status = false;
for (int i = 0; i < 5; i++)
{
z = strcmp(str[i], str[i + 1]);
if (z > 0)
{
temp = str[i];
str[i] = str[i + 1];
str[i + 1] = temp;
status = true;
}
}
cout << "Strings (Names) in alphabetical order : \n";
for (i = 0; i<5; i++)
{
cout << str[i] << "\n";
}
}
我收到错误消息:
char * temp [1]必须是可修改的左值,并且在第26行&#39; =&#39;是报告&#34; char temp [1] char *类型的值不能分配给char *&#34;
类型的实体
我正在使用visual studio 2015
答案 0 :(得分:0)
以下是您在代码中所做的一些错误,您不应该这样做。
将str[]
初始化为
char* str[] = {"john", "mike", "alex", "rick", "chris"};
否则,您将收到与C++
编译器版本相关的警告。
第一个for循环应
for (int i = 0; i < 4; i++) // i < 4 or you'll get sagmentation fault
{
z = strcmp(str[i], str[i + 1]);
if (z > 0)
{
temp[0] = str[i]; // temp[0] instead of temp
str[i] = str[i + 1];
str[i + 1] = temp[0];
status = true; // here also temp[0]
}
最后一个,此代码不会对str[]
进行排序。你输出的代码(在obove修改之后)将是这样的:
Strings (Names) in alphabetical order :
john
alex
mike
chris
rick
部分排序。要对此数组进行完全排序,您必须使用与nested for loops
相同的两个bubble sort
。