Функция void, которая возвращает среднее, максимальное, минимальное и принимает в качестве параметра массив и количество входов - PullRequest
0 голосов
/ 16 апреля 2019

Итак, я пытаюсь создать программу, которая возвращает среднее, минимальное и максимальное значения из функции void.Я действительно не вижу, что не так с кодом, и я надеюсь, что кто-то может помочь. Компилятор не находит никаких ошибок или предупреждений, но когда я запускаю программу, я получаю «Процесс завершен с возвращаемым значением 3221225477».Проблема, кажется, в функции, которую я создал.Заранее спасибо.

    void emporeuma(double array[], int plithos, double* avg, double* max, 
    double* min, int* plit)
    {
    int j;
    double sum;
    avg=0;
    sum=0;
   *plit=plithos;
    for(j=0;j<plithos-1;j++){

     sum=sum + array[j];
        }
    *avg=sum/plithos;
     *min=array[0];
     *max=array[0];
     for(j=1;j<plithos-1;j++)
     {
       if (array[j]>*max)
        {
          array[j]=*max;
           }

       if (array[j]<*min)
        {
        array[j]=*min;
         }

         }

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Цикл слишком короткий, а максимальное и минимальное отслеживание идет вперед-назад. Вот предлагаемое редактирование этой части:

for(j = 1; j < plithos; j++) {    // extend to the last element
    if (array[j] > *max) {
        *max = array[j];          // update the max
    }
    if (array[j] < *min) {
        *min = array[j];          // update the min
    }
    sum += array[j];              // ready to calculate avg
}
avg = sum / plithos;              // average
0 голосов
/ 16 апреля 2019
    avg=0;
    ...
    *avg=sum/plithos;

вылетает из вашей программы. Вы, вероятно, хотите написать *avg = 0.

...