数组元素编号

时间:2017-02-03 21:28:48

标签: 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;
}

2 个答案:

答案 0 :(得分:1)

首先,数组索引从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;
}

答案 1 :(得分:0)

大多数(我能想到的)编程语言中的数组从索引零开始。因此,只需将for循环条件更改为:

c(1,2,1)

因为你希望循环从数组中的第一个元素开始,所以我必须初始化为0.这应该可以解决你对数组的问题。