cout.precision(10); //будет выводится 10 значащих цифр
cout << (double)sum/cnt; //sum приведен здесь к типу double
Целые числа могут быть и отрицательными, так что проверка a>0 вряд ли уместна. #include <iostream>
using namespace std;
class Sequence {
size_t count = 0;
long long sum = 0LL;
public:
bool add(const int value) {
if (!value) return false;
sum += value;
++count;
return true;
}
double average() const {
return static_cast<double>(sum) / static_cast<double>(count);
}
};
int main() {
cout.setf(ios::fixed);
cout.precision(15);
Sequence sequence;
int value;
do cin >> value; while (sequence.add(value));
cout << sequence.average() << '\n';
}
#include <iomanip>
#include <iostream>
using namespace std;
int main() {
int a;
unsigned cnt = 0;
double sum = 0.0;
while (true) {
cin >> a;
if (!a) break;
sum += a;
++cnt;
}
cout << fixed << setprecision(15) << sum / cnt << '\n';
}
Определите среднее значение всех элементов последовательности, завершающейся числом 0. Сам ноль в последовательность не входит.
Использовать массивы в данной задаче нельзя.
Входные данные
Вводится последовательность целых чисел, не равных 0, оканчивающаяся числом 0 (само число 0 в последовательность не входит, а служит признаком её окончания).
Выходные данные
Выведите ответ задачи.
Примеры
Ввод
1
7
9
0
Вывод
5.66666666667
МОЙ КОД:
#include <iostream>
using namespace std;
int main ()
{
int a,sum=0,cnt=0;
cin >> a;
while (a>0) {
sum=sum+a;
cnt=cnt+1;
cin >> a;
}
cout << sum/cnt;
return 0;
}
ПРОБЛЕМА В ТОМ, ЧТО Я НЕ ПОНИМАЮ, КАК ИМЕННО В С++ СДЕЛАТЬ ТАК, ЧТОБЫ ОТВЕТ ВЫВОДИЛСЯ В БЕСКОНЕЧНОЙ ДЕСЯТИЧНОЙ ДРОБИ. то есть я понимаю, что / - это целая часть от деления, а % - это дробная часть от деления.