【发布时间】:2023-03-21 08:50:01
【问题描述】:
我正在尝试按字母顺序获取最小值。
这是我目前写的代码:
#include <iostream>
#include <string>
using namespace std;
void swap(string[], int i, int j);
string displayArray(string[], int size);
string findMin(string[] , int size);
int main()
{
string themin;
int size;
string A[7] = { "MBA", "ME", "Psy", "EE", "CS", "CE", "Bio" };
for (int i = 0; i < 7; i++)
{
cout << A[i]<<" ";
}
cout << endl;
swap(A, 1, 4);
for (int i = 0; i < 7; i++)
{
cout << A[i] << " ";
}
findMin(A, themin);
cout<< themin << endl;
}
void swap(string A[], int i, int j)
{
string temp = A[i];
A[i] = A[j];
A[j] = temp;
}
string findMin(string A[] , int size)
{
string themin = A[0];
for(int i = 1; i < size; i ++)
{
if(A[i].compare(themin) < 0)
themin=A[i];
}
return themin;
}
我收到此错误,但不明白如何解决:
25:26:错误:无法将参数“2”的“std::string {aka std::basic_string
}”转换为“int”到“std::string findMin(std::string*, int)'
【问题讨论】:
-
错误是不言自明的。您正在传递
std::string,其中预期int。您将themin变量(string)传递给size参数(int)。在传递themin(或size变量,就此而言)之前,您甚至没有为它分配任何值。这段代码是乱码,你到底想用它来完成什么? -
因为您要传递一个字符串,而该字符串需要一个 int?您的函数
findMin(...)接受一个字符串数组和一个 int。你已经放了一个字符串数组,然后是一个字符串 -
我该如何解决这个问题?这是老师写给课堂的。我必须按字母顺序找到最小值。
-
假设您的任务不是解决他们的无意义代码,只需联系他们并告诉他们他们的代码没有构建。
-
使用 STL:std::array + std::swap + std::min_element = 完成!