#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. Не волнуйтесь, это не последний раз, когда что-то простое кусает вас часами, часами и часами …. (это мучение распространяется поровну на всех, кто кодирует)