尝试获取数组中的最小元素时崩溃

Crash when trying to get minimal element in array

本文关键字:元素 崩溃 获取 数组      更新时间:2023-10-16

作业:给出了三个向量A [n],B [m],C [k]。对于每一个,找到最小的元素。

问题:当程序必须在每个数组中找到最小元素时

崩溃

我想这是因为我在 GetMin 函数中写了返回 0,但我不知道我应该在那里写什么(听起来很愚蠢,但我是新手,现在有点沮丧(。将 0 更改为最小值,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;
}

直接的问题是你没有注意你的数组边界和循环变量。

mnk 是无效索引,并且没有一个循环使用循环变量进行索引。

第一个应该看起来像这样:

int min = a[0];
for(int x = 0; x < n; ++x)
{
    if(a[x] < min)
    {
        min = a[x];
    }
}

将该循环包装在一个函数中,您可以在任意数量的数组中找到最少的元素。