вектор c ++ не найден при передаче в функцию? - PullRequest
0 голосов
/ 03 марта 2019

РЕДАКТИРОВАТЬ: Очевидно, этот код в порядке, но по какой-то причине не работает на встроенном компиляторе c ++ Atom.

Поэтому я пытаюсь создать программу на C ++, которая принимает массив, а затем возвращаетсреднее из всех чисел в этом массиве.С тех пор я узнал, что любой массив переходит в функцию «распада» в указатели и указывает в направлении векторов.Однако я застрял в этом коде, который, кажется, ничего не печатает.Я попытался отладить, напечатав его во время цикла for, но он все равно ничего не печатает.Значит ли это, что он вообще не находит размер вектора, а просто заканчивается до его начала?Он не выдает никаких ошибок, поэтому я не уверен.Как мне получить это, чтобы вывести среднее значение этого вектора?Заранее спасибо!

#include <iostream>
#include <vector>
using namespace std;

vector<int> arr = {1, 2, 3, 4, 5, 6};

void avg(vector<int> array){
  double total = 0;
  for (int i = 0; i < array.size(); i++){
    total += array[i];
  }
  double average = total/array.size();
  cout << average;
}

main(){
avg(arr);
}

Ответы [ 2 ]

0 голосов
/ 03 марта 2019
Below code is working for me, I guess you forgot to pause the result screen

#include <iostream>
#include <vector>
using namespace std;

vector<int> arr = {1, 2, 3, 4, 5, 6};

void avg(vector<int> array) {
  double total = 0;
  for (int i = 0; i < array.size(); i++) {
    total += array[i];
  }
  double average = total / array.size();
  cout << average;
}

int main() {
  avg(arr);
  system("pause");
  return 0;
}
0 голосов
/ 03 марта 2019

Ваш выходной поток, вероятно, буферизован.Попробуйте добавить в конце новую строку, например:

cout << average << endl;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...