我正在嘗試實作冒泡排序功能 bubbleSort(names, size) 并使用我的驅動程式代碼對其進行測驗。呼叫該函式時,驅動程式代碼出錯。我想知道如何在呼叫函式時正確設定第一個引數。
我收到兩個與第一個引數“名稱”相關的錯誤。
錯誤(活動)E0167 “char *”型別的引數與“char **”型別的引數不兼容
錯誤 C2664 'void bubbleSort(char *[],const int)': 無法從 'char [8]' 轉換引數 1到'字符*[]'
我正在使用 Windows 10 專業版(64 位)和 Visual Studio Community 2019。提前感謝您的幫助。
#include <iostream>
#include <string.h>
using namespace std;
enum Bool { TRUE, FALSE };
void bubbleSort(char *names[], const int size)
{
Bool swapped;
char* temp;
for (int i = 0; i < size; i)
{
swapped = FALSE;
for (int j = 0; j < size - i - 1; j)
{
if (names[j] > names[j 1])
{
temp = names[j];
names[j] = names[j 1];
names[j 1] = temp;
swapped = TRUE;
}
}
// if no two elements were swapped by inner loop, then break
if (swapped == FALSE)
{
break;
}
}
}
int main()
{
char names[] = {'s', 'a', 'c', 'd', 'i', 'd', 'm', 'o'};
int size = 8;
bubbleSort(names, size); // i get error here for 'names'
for (int i = 0; i < size; i)
cout << names[i] << " " << endl;
}
uj5u.com熱心網友回復:
您的 sort 函式需要一個 C 字串陣列,但您傳遞的是一個字符陣列。因此錯誤。
要對字符陣列進行排序,請嘗試以下操作:
#include <iostream>
using namespace std;
void bubbleSort(char names[], const int size)
{
bool swapped;
char temp;
for (int i = 0; i < size; i)
{
swapped = false;
for (int j = 0; j < size - i - 1; j)
{
if (names[j] > names[j 1])
{
temp = names[j];
names[j] = names[j 1];
names[j 1] = temp;
swapped = true;
}
}
// if no two elements were swapped by inner loop, then break
if (!swapped)
{
break;
}
}
}
int main()
{
char names[] = {'s', 'a', 'c', 'd', 'i', 'd', 'm', 'o'};
int size = 8;
bubbleSort(names, size);
for (int i = 0; i < size; i)
cout << names[i] << " " << endl;
}
或者,要對 C 字串陣列進行排序,請嘗試以下操作:
#include <iostream>
#include <cstring>
using namespace std;
void bubbleSort(const char* names[], const int size)
{
bool swapped;
const char* temp;
for (int i = 0; i < size; i)
{
swapped = false;
for (int j = 0; j < size - i - 1; j)
{
if (strcmp(names[j], names[j 1]) > 0)
{
temp = names[j];
names[j] = names[j 1];
names[j 1] = temp;
swapped = true;
}
}
// if no two elements were swapped by inner loop, then break
if (!swapped)
{
break;
}
}
}
int main()
{
const char* names[] = {"s", "a", "c", "d", "i", "d", "m", "o"};
int size = 8;
bubbleSort(names, size);
for (int i = 0; i < size; i)
cout << names[i] << " " << endl;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/313903.html
上一篇:使用指標演算法反轉字串
