Присвоение изменяющихся номеров одной переменной

#c #math #average

#c #математика #среднее

Вопрос:

Просто копался в C … хотел создать программу, которая вычисляла среднее значение любых чисел, введенных пользователем.

Программа работает нормально, я просто не могу «логически» понять, как выполнить следующую часть.

Мне нужно иметь возможность брать каждое число, которое они вводят, и усреднять их, используя число, которое они вводят для первого scanf для деления. Я назначил только одну переменную для каждого введенного ими числа, но примерно через секунду, просмотрев код, я понял, что мне нужно будет использовать исчисление или какой-нибудь программный трюк, чтобы иметь возможность делать это (эффективно) бесконечно. По сути, переменная должна меняться каждый раз, чтобы можно было взять сумму, а затем разделить ее на общее количество чисел. Я разглагольствую…

Может ли кто-нибудь, кто может понять мою глупую проблему, дать мне несколько советов? Это было бы здорово…

Мои includes и int main () есть, не волнуйтесь. Просто не было необходимости загромождать его уже известными вещами. Кроме того, я ничего не сокращаю — на данный момент я не чувствую в этом необходимости.

 // Base variables
int iUserReq, iNumCounter = 0;
// Each individual number
double dUserNum = 0.0;
// Calculation
double dNumSum = 0.0, dNumAvg = 0.0;


// Ask user for the number of variables to be averaged... will come in handy
printf("Please input how many numbers you would like to average together, as a number. For example, 10.nTry to keep it low, because you're going to be putting them all in manually.   >   ");
scanf("%d", amp;iUserReq);

// If user inputs 0 or negative number, keep asking until they put in a positive number
while(iUserReq <= 0)
{
    printf("Please input a number greater than 0.   >   ");
    scanf("%d", amp;iUserReq);
}

// This adds a counter, so for the number of numbers the user wants to average, it will loop that many times and ask for an input that many times
// I.e. they want to average 10 numbers, it asks for 10 numbers

// THIS IS WHERE I'M STUCK... HELP?
while(iNumCounter < iUserReq)
{
    printf("Please input number.   >   ");
    scanf("%lf", amp;dUserNum);
    iNumCounter = iNumCounter   1;
}

return 0;
  

Спасибо…

Упаковщик

Комментарии:

1. Вы объявили переменную с именем dNumSum .. как вы думаете, что с ней делать?

2. Помните, что среднее значение — это сумма всех входных данных, деленная на количество входных данных.

3. следуя комментарию Иоахима — вы можете сохранить сумму введенных чисел по мере ввода пользователем чисел, а затем разделить на количество чисел в любой момент, чтобы показать среднее значение

4. Вы всегда должны проверять возвращаемое значение из scanf . В вашем коде каждый из вызовов scanf должен возвращать 1, поэтому вам нужно убедиться, что они вернули 1. Чтобы понять, почему, просто введите любую букву и нажмите клавишу ввода.

5. Я знаю, как усреднить сумму чисел… Чего я не могу понять, так это того, что пользователь повторно вводит разные значения для одной и той же переменной. Как я мог бы вести текущий подсчет суммы при вводе каждого нового числа?

Ответ №1:

Хорошо, я собираюсь куснуть и дать вам решение.

В верхней части вашей программы:

 double sum = 0.0;
  

После сканирования () для каждого числа:

 sum  = dUserNum;
  

Непосредственно перед return 0 :

 printf("%fn", sum / iUserReq);
  

Вы понимаете, почему это работает?

Комментарии:

1. Не волнуйтесь, это не последний раз, когда что-то простое кусает вас часами, часами и часами …. (это мучение распространяется поровну на всех, кто кодирует)