c++ - 数组元素编号

标签 c++ arrays

我需要一些关于简单程序的帮助。不 - 这不是我的作业(我正在为自己学习 Cpp 并可能在未来使用它) 嗯是的。我有一个程序,读取数组大小 10 , 然后在其中输入数字 {2.56, 1.598, 0, 5.15, 0, 3.012, 10, 4.789, 2.569, 0} 该程序应忽略 0 ,确实如此,但问题是..我需要获取数字在数组中的位置 (最小的数字是 1.598 及其在数组中的 2) 同时我得到号码 8在最大的(应该是 5 如果零将被忽略) 和 1在最小的。我该如何解决? 这是最大数的空值:

void Biggest(float array[], int n, float &max, int &maxNr)
{
    max = array[0]
    for (int i = 1; i < n; i++){
        if (array[i] == 0)
            continue;
        if (array[i] > max){
            max = array[i];
            maxNr = i;
        }
    }
}

打印无效:

void Print(float min, float max, double avg, int maxNr, int minNr)
{
    ofstream info;
    info.open("result1.txt");
    info << "Biggest: " << max << "  Number : " << maxNr << endl;
    info << "Smallest: " << min << "  Number : " << minNr << endl;
    info << "Average: " << avg << endl;
    info.close();
}

所有主要内容。

int main(){
    float array[100];
    int n;
    float max;
    float min;
    double avg;
    int maxNr, minNr;

    Reading(array, n);
    Biggest(array, n, max, maxNr);
    Smallest(array, n, min, minNr);
    Average(array, n, avg);
    Printing(min, max, avg, maxNr, minNr);
    return 0;
}

最佳答案

首先,数组索引从0开始,而不是1

如果你想获得忽略零的位置,你需要使用一个单独的计数器变量,而不是用于索引数组的计数器变量,这样你就不会在跳过 0 时增加它.

void Biggest(float array[], int n, float &max, int &maxNr)
{
    max = array[0];
    int position = 0;
    for (int i = 0; i < n; i++){
        if (array[i] == 0) {
            continue;
        }
        if (array[i] > max){
            max = array[i];
        }
        position++;
    }
    maxNr = position;
}

关于c++ - 数组元素编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42033283/

相关文章:

c++ - 预制 C++ "hello world"错误

javascript - 复制 N 个 JS 对象并在其中进行更改

c++ - 更新窗口的标志

C++:定时回调后的WHILE循环会阻止回调吗?

c++ - 哪些真实平台将硬件端口映射到内存地址?

javascript - 对象数组 - 所有对象都等于最后一个 javascript

javascript - 需要删除对象数组中的重复项 - 获取键的较高值

android - 将所选图像转换为字节数组并转换为字符串

javascript - 如何在 Vanilla Javascript 中不修改源数组的情况下找到数组的最后一个元素

c++ - 附加条件语句使程序更快