Мой минимальный раздел не показывает реальный минимум - PullRequest
0 голосов
/ 21 марта 2019
#include<stdio.h>
int main(){
float a[100],sum=0.0,avg,havg[100],min,max;
int i;
for(i=0; i!=-1;i++){
    printf("Enter number : ");
    scanf("%f",&a[i]);
    max = a[0];
    min = a[0];
    sum+=a[i];
    avg= sum/(i+1);
    havg[i]=avg/2;
    printf("Loop %d Summation : %.0f ",i,sum);
    printf("Half of Avg. : %.2f \n",havg[i]);
    for(int j=0; j<i; j++){
       if (a[i]>max) {
           max = a[i];
       }
       if (a[i]<min) {
           min = a[i];
       }
    }
    if(a[i]>havg[i-1]&&i!=0){
       break;
    }
}
printf("---Data Complete---\n");
printf("Max: %.0f\n", max);
printf("Min: %.0f\n", min);

Вывод здесь:

Введите номер: 24

Цикл 0 Суммирование: 24 половины среднего. : 12.00

Введите номер: 12

Цикл 1 Суммирование: 36 половина среднего. : 9.00

Введите номер: -5

Цикл 2 Суммирование: 31 половина среднего. : 5,17

Введите номер: 9

Цикл 3 Суммирование: 40 половина среднего. : 5,00

--- Данные завершены ---

Макс .: 24

Мин: 9

Я уже смотрю на минимальное и максимальное значения в массиве в Google. Я думаю, что я что-то напутал:

#include<stdio.h>
int main(){
float a[100],sum=0.0,avg,havg[100],min=0.0,max=0.0;
int i;
for(i=0; i!=-1;i++){
    printf("Enter number : ");
    scanf("%f",&a[i]);
    max = a[0];
    min = a[0];
    sum+=a[i];
    avg= sum/(i+1);
    havg[i]=avg/2;
    printf("Loop %d Summation : %.0f ",i+1,sum);
    printf("Half of Avg. : %.2f \n",havg[i]);
    if (a[i]>max){
      max = a[i];
        }
    if (a[i]<min){
      min = a[i];
        }
    if(a[i]>havg[i-1]&&i!=0){
       break;
    }
}
printf("---Data Complete---\n");
printf("Max: %.0f\n", max);
printf("Min: %.0f\n", min);
}

Итак, теперь я тестирую с другим номером (сначала с отрицательного)

Enter number : -10

Loop 1 Summation : -10 Half of Avg. : -5.00 

Enter number : -90 

Loop 2 Summation : -100 Half of Avg. : -25.00 

Enter number : 30

Loop 3 Summation : -70 Half of Avg. : -11.67 

---Data Complete---

Max: 30

Min: -10

Это действительно сбивает с толку

1 Ответ

0 голосов
/ 21 марта 2019

Пожалуйста, переместите инициализацию min и max, которая выполняется в каждом цикле

#include<stdio.h>

int main(){
    float a[100],sum=0.0,avg,havg[100],min=0.0,max=0.0;
    int i;
    for(i=0; i!=-1;i++){
        printf("Enter number : ");
        scanf("%f",&a[i]);
        sum+=a[i];
        avg= sum/(i+1);
        havg[i]=avg/2;
        printf("Loop %d Summation : %.0f ",i+1,sum);
        printf("Half of Avg. : %.2f \n",havg[i]);
        if(i == 0) {
            max = a[0];             // moved to here
            min = a[0];
        }
        else {
            if (a[i]>max){
                max = a[i];
            }
            if (a[i]<min){
                min = a[i];
            }
            if(a[i]>havg[i-1]) {    // moved this too
                break;
            }
        }
    }
    printf("---Data Complete---\n");
    printf("Max: %.0f\n", max);
    printf("Min: %.0f\n", min);
}

Вывод программы:

Enter number : -10
Loop 1 Summation : -10 Half of Avg. : -5.00
Enter number : -90
Loop 2 Summation : -100 Half of Avg. : -25.00
Enter number : 30
Loop 3 Summation : -70 Half of Avg. : -11.67
---Data Complete---
Max: 30
Min: -90
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...