
С++. Срочно нужна помощь!!! Написать программу, запрашивующую у пользователя в бесконечном цикле
число и выводящую среднее значение всех введённых ранее чисел. Вывод в формате: "Среднее значение этих ... чисел равно ...". Среднее значение выводить с точностью до 5 десятичных знаков (т.е. до 1/100000). Программа перестаёт работать или при вводе символа вместо числа, или при истечении 1 минуты с момента ввода первого числа

Ответы на вопрос

Ответ:
Примерно так
#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-файл в закрепе*/




Для создания такой программы на C++ вы можете использовать следующий код. В нем используется библиотека <iostream>
для ввода и вывода, <ctime>
для отслеживания времени и <cstdlib>
для обработки ошибок при вводе.
cpp#include <iostream>
#include <ctime>
#include <cstdlib>
int main() {
double sum = 0.0;
int count = 0;
std::time_t startTime = std::time(nullptr);
while (true) {
std::cout << "Введите число: ";
std::string input;
std::cin >> input;
if (std::cin.fail()) {
std::cout << "Ошибка ввода. Программа завершает работу." << std::endl;
break;
}
double number = std::atof(input.c_str());
if (std::abs(number) < 1e-5) {
std::cout << "Среднее значение этих " << count << " чисел равно " << sum << std::endl;
break;
}
sum += number;
count++;
std::time_t currentTime = std::time(nullptr);
if (currentTime - startTime >= 60) {
std::cout << "Истекло 1 минута с момента ввода первого числа. Программа завершает работу." << std::endl;
break;
}
double average = sum / count;
std::cout.precision(5);
std::cout << "Среднее значение этих " << count << " чисел равно " << std::fixed << average << std::endl;
}
return 0;
}
Этот код запрашивает числа от пользователя в бесконечном цикле, вычисляет среднее значение и выводит его с точностью до 5 знаков после запятой. Программа завершает работу, если прошло более минуты с момента ввода первого числа или если пользователь ввел что-то, что не является числом.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili