家庭作业:给出了三个向量A [n],B [m],C [k]。为每个元素找到最小元素。
问题:程序必须在每个数组中找到最少的元素时崩溃
我想是因为我在GetMin函数中写了return 0,但是我不知道我应该在那写什么(听起来很愚蠢,但是我是新手,现在有点沮丧)。将0更改为min,min2,min3会得到较大的奇数。
int GetMin(int*a, int n, int*b, int m, int*c, int k)
{
int min = a[0];
for(int x = 0; x < n; ++x)
{
if(a[n] < min)
{
min = a[n];
}
}
int min2 = b[0];
for(int x = 0; x < n; ++x)
{
if(b[m] < min2)
{
min2 = b[m];
}
}
int min3 = c[0];
for(int x = 0; x < n; ++x)
{
if(c[k] < min3)
{
min3 = c[k];
}
}
return 0;
}
int main()
{
int n, m, k;
cout << "Enter size of first vector: ";
cin >> n;
cout << endl;
int*a = new int[n];
cout << "Enter vector elements: ";
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
cout << endl;
cout << "Enter size of second vector: ";
cin >> m;
cout << endl;
int*b = new int[m];
cout << "Enter vector elements: ";
for (int i = 0; i < m; i++)
{
cin >> b[i];
}
cout << endl;
cout << "Enter size of third vector: ";
cin >> k;
cout << endl;
int*c = new int[k];
cout << "Enter vector elements: ";
for (int i = 0; i < k; i++)
{
cin >> c[i];
}
cout << endl;
int result = GetMin(a, n, b, m, c, k);
cout << "Minimal element = " << result << endl;
delete[]a;
delete[]b;
delete[]c;
system("pause");
return 0;
}
答案 0 :(得分:0)
直接的问题是您没有一直在关注数组边界和循环变量。
m
,n
和k
是无效索引,您的循环中没有一个使用循环变量进行索引。
第一个应如下所示:
int min = a[0];
for(int x = 0; x < n; ++x)
{
if(a[x] < min)
{
min = a[x];
}
}
将该循环包装到函数中,您可以找到任意数量的数组中的最小元素。