1

Тема: Допоможіть будь ласка з do wile(Чомусь не корректно працює)

Задача:Написати програму, яка визначає максимальне число і середнє арифметичне у введеній з клавіатури послідовності чисел.
Максимальне число я знайшов, так і як середнє арифметичне, але при обчисленні невірне число виходить. Допоможіть будьласка!
Код:

#include<stdio.h>
#include<Windows.h>
#include<math.h>

int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int max = 0, val;
    float i = 0, sum = 0;
    printf("Введіть цілі числа, 0 завершує програму:\n");
    do{
        scanf_s("%d", &val);
        if (val == 0);
        else
            max = (max >= val) ? max : val;
        i++;
        sum += val;
    }while (val != 0);
    printf("Максимальне:%d\n",max);
    printf("Середнє арифметичне:%.3f\n", (i == 0) ? 0 : sum/i);
    return 0;
}

2 Востаннє редагувалося mamkin haker (01.11.2021 22:43:52)

Re: Допоможіть будь ласка з do wile(Чомусь не корректно працює)

//Ось на С++, зрівняйте зі своїм
#include <iostream>

int main () {
    int input_number;
    int suma = 0;
    int max = 0;
    int i = 0;
    do {
        std::cin >> input_number;
        
        if (max < input_number) {
            max = input_number;
        }
        
        if (input_number != 0) {
            suma += input_number;
            i++;
        }
    }while(input_number != 0);
    
    std::cout << "max = " << max << std::endl;

    if (i != 0) {
        std::cout << "ceredne = " << suma / i << std::endl;
    }
}

3

Re: Допоможіть будь ласка з do wile(Чомусь не корректно працює)

В чому допомагати? В тому, що ви не розумієте самі який рядок коду за що відповідає?

4

Re: Допоможіть будь ласка з do wile(Чомусь не корректно працює)

    do{
        scanf_s("%d", &val);
        if (val == 0);
        else
            max = (max >= val) ? max : val;
        i++;
        sum += val;
    }while (val != 0);

do...while працює якраз коректно, це ви некоректно склали програму. Ще раз перечитайте що робить do...while.
Що ви намагаєтеся зробити в наступних рядках коду?

        if (val == 0);
        else
            max = (max >= val) ? max : val;
        i++;
        sum += val;

5

Re: Допоможіть будь ласка з do wile(Чомусь не корректно працює)

0xDADA11C7 написав:

В чому допомагати? В тому, що ви не розумієте самі який рядок коду за що відповідає?

Вже не потрібно, сам знайшов.

Подякували: 0xDADA11C71