Предмет: Информатика, автор: jiokor03

Задача c++, даю 50 баллов

Среднее арифметическое

Выведите среднее арифметическое элементов последовательности. Решение оформите как функцию double average(vector &A).

Входные данные:

В первой строке входных данных записано натуральное число n (n≤100) — количество элементов последовательности. В следующей строке даны n целых чисел, по модулю не превышающих 100, — элементы последовательности.

Выходные данные:

Выведите ответ на задачу с точностью не менее трёх знаков после запятой.


Примеры


Ввод

5

1 2 3 4 5

Вывод

3.0000000000

Ввод

3

1 2 10

Вывод

4.3333333333

Приложения:

Ответы

Автор ответа: nizzomiddinovn
2

Ответ:

double sum = 0;

for(int i = 0; i < a.size(); ++i)

sum += А[i];

return sum / a.size();

Автор ответа: nikitaeda99
1

Может быть будет интересно.

#include <vector>

#include <string>

#include <iostream>

using namespace std;

double average(vector<int>& myVec) {

double sum = 0;

for (auto& i : myVec) { // таким образом можно обращаться к элементам вектора

 sum += i;

}

return sum / myVec.size();

}

int main() {

setlocale(LC_ALL, "Ru");

int n;

do { // проверка на ввод n

 cout << "Введите n:\nn = ";

 cin >> n;

 if (n > 100) {

  cout << "n > 100 - противоречие условию, т.к. n принадлежит [1,100].\n";

 }

 else if (n == 0) {

  cout << "0 не является натуральным числом.\n";

 }

 if (n == 0 || n > 100) {

  cout << "Ошибка ввода. Попробуйте ещё раз.\n\n";

 }

} while (n <= 0 || n > 100);

string str;

vector<int> myVec;

getline(cin, str); // собственно записывает строку в переменную str, т.к. cin >> str позволяет записать только первое вхождение (т.е. до пробела), а нам нужна полноценная строка

// В с++ есть забавный баг. При первом проходе, компилятор

// не читает getline(...), зато при повторных проходах - читает :D.

// Поэтому приходиться выкручиваться и писать вот так.

while (myVec.size() == 0) {

 do {

  cout << "\nВведите, через пробел, значения вектора:\n";

  getline(cin, str);

  if (str.empty()) {

   cout << "Вы ничего не ввели. Попробуйте ещё раз.\n";

  }

 } while (str.empty()); // проверка на случай, если пользователь ничего не ввёл

 str += " "; // это надо для того, чтобы следующий цикл while корректно работал

 while (str.length() != 0) {

  myVec.push_back(stoi(str.substr(0, str.find_first_of(" ")))); // добавляет в конец вектора первый элемент до пробела (stoi() - конвертирует string в int)

  str.erase(0, str.find_first_of(" ") + 1); // удаляет первый элемент в str (т.е. тот, который мы выше занесли в наш вектор)

 }

 if (myVec.size() > n) { // снова наши проверки

  cout << "Вы ввели значение вектора > n. Попробуйте ещё раз.\n";

  myVec.clear();

 }

 else if (myVec.size() < n) {

  cout << "Вы ввели значение вектора < n. Попробуйте ещё раз.\n";

  myVec.clear();

 }

}

cout.precision(10);

cout << "Среднее арифметическое: " << average(myVec);

return 0;

}

Приложения:
Похожие вопросы
Предмет: Французский язык, автор: gfhkskv
Предмет: Биология, автор: stalker2086