#include <iostream>
using namespace std;
void calculateAverage(double& average, int& count) {
int num;
int sum = 0;
count = 0;
// Считываем числа до тех пор, пока не встретим 0
while (true) {
cin >> num;
if (num == 0) {
break;
}
sum += num;
count++;
}
// Вычисляем среднее значение
if (count > 0) {
average = static_cast<double>(sum) / count;
} else {
average = 0;
}
}
int main() {
double average;
int count;
calculateAverage(average, count);
cout << "Среднее значение: " << average << endl;
cout << "Количество чисел: " << count << endl;
return 0;
}
#include <iostream>
using namespace std;
void input(int &sum, int &cnt) {
int v;
cnt = -1;
sum = 0;
do {
cin >> v;
++cnt;
sum += v;
} while(v);
}
int main() {
int sum, cnt;
input(sum, cnt);
cout << double(sum) / cnt;
}
Вариант, когда функция возвращает сумму и количество.Гарантируется, что последовательность содержит хотя бы одно число (кроме нуля)и тупо впихивает бессмысленную проверку count > 0.
#include <iostream>
using namespace std;
void calculateAverage(double& average, int& count) {
int num;
int sum = 0;
count = 0;
// We read the numbers until we meet 0
while (true) {
cin >> num;
if (num == 0) {
break;
}
sum += num;
count++;
}
// Calculate the average value
if (count > 0) {
average = static_cast<double>(sum) / count;
} else {
average = 0;
}
}
int main() {
double average;
int count;
calculateAverage(average, count);
cout << "Average: " << average << endl;
cout << "Number of numbers: " << count << endl;
return 0;
}