С++. Срочно нужна помощь!!!
Написать программу, запрашивующую у пользователя в бесконечном цикле число и выводящую среднее значение всех введённых ранее чисел.
Вывод в формате: "Среднее значение этих ... чисел равно ...". Среднее значение выводить с точностью до 5 десятичных знаков (т.е. до 1/100000).
Программа перестаёт работать или при вводе символа вместо числа, или при истечении 1 минуты с момента ввода первого числа
Answers & Comments
Ответ:
Примерно так
#include <iostream>
#include <chrono>
#include <ctime>
int main()
{
auto start = std::chrono::system_clock::now();
auto end = std::chrono::system_clock::now();
bool Cycle = true;
double SredSum=0;
std::time_t end_time;
double Entered = 0, count = 0;
setlocale(LC_ALL, "Russian");
std::cout.precision(5);
std::chrono::duration<double> elapsed_seconds = end - start;
do {
std::cin >> Entered;
if (std::cin.fail()){
Cycle = false;
break;
}
end = std::chrono::system_clock::now();
elapsed_seconds = end - start;
SredSum = ((SredSum * count) + Entered) / (count + 1.0);
count++;
std::cout << "Среднее значение этих " << count << " чисел равно " << SredSum << std::endl;
if (elapsed_seconds.count() > 60) { Cycle = false; }
} while (Cycle);
}
#include <iostream>
#include <ctime>
using namespace std;
double running_avg(double i);
void main()
{
setlocale(LC_ALL, "RU");//русский язык
clock_t t1, t2;
t1 = clock() / 1000;//начало отсчета(в секундах)
double num;
while (true)
{
t2 = clock() / 1000;
cout << "Введите значение (для выхода введите любой знак или дождитесь 60 секунд от запуска программы)\n";
if (!(cin >> num) || (t2 - t1 > 60)) break;//конец отсчета
cout << "Среднее значение всех чисел равно: " << running_avg(num) << "\n\n\n";
}
}
double running_avg(double i) {
static double sum = 0;//при каждом новом вызове функции значения sum и count сохраняются
static int count = 0;
sum = sum + i;
count++;
return sum / count;//среднее значение
}
/*cpp-файл в закрепе*/