I have a question regarding this program. I am a beginner when it comes to programming and c++, and I'm trying to figure out two things.
why is this program not compiling (error: Using uninitialized memory 'total' - I have it defined as a variable??).
Could someone explain how the function outside of the main (
sumUpTo) works? Specifically& vecandtotal, as I've never seen them before. Thanks.
/* 1) read in numbers from user input, into vector -DONE 2) Include a prompt for user to choose to stop inputting numbers - DONE 3) ask user how many nums they want to sum from vector - 4) print the sum of the first (e.g. 3 if user chooses) elements in vector.*/ #include <iostream> #include <string> #include <vector> #include <numeric> //for accumulate int sumUpTo(const std::vector<int>& vec, const std::size_t total) { if (total > vec.size()) return std::accumulate(vec.begin(), vec.end(), 0); return std::accumulate(vec.begin(), vec.begin() + total, 0); } int main() { std::vector<int> nums; int userInput, n, total; std::cout << "Please enter some numbers (press '|' to stop input) " << std::endl; while (std::cin >> userInput) { if (userInput == '|') { break; //stops the loop if the input is |. } nums.push_back(userInput); //push back userInput into nums vector. } std::cout << "How many numbers do you want to sum from the vector (the numbers you inputted) ? " << std::endl; std::cout << sumUpTo(nums, total); return 0; }
total, and you are using it, but you've never given it any particular value. Your program then exhibits undefined behavior by way of accessing an uninitialized object.sumUpTois unclear to you? You seem to be saying you've never before seen a function taking parameters. Surely your favorite C++ textbook contains examples of such.&here indicates a reference, not a pointer. Your favorite C++ textbook should have a section on passing parameters by reference. And a section on defining and calling functions.