using namespace std; class Tokenizer { public: static vector split(string haystack, string separator) { vector result; int startPosion = 0; while (true) { while (haystack[startPosion] == 32){ startPosion += 1; } size_t foundPos = haystack.find(separator, startPosion); if (foundPos != string::npos) { string token = haystack.substr(startPosion, foundPos - startPosion); result.push_back(token); startPosion = separator.length() + foundPos; } else { string token = haystack.substr(startPosion, separator.length() - startPosion); result.push_back(token); break; } } return result; } }; int sum(vector numbers) { int sum = 0; for (int i = 0; i < numbers.size(); i++) { sum += numbers[i]; } return sum; } int min(vector numbers) { int min = numbers[0]; for (int i = 0; i < numbers.size(); i++) { if (min >numbers[i]){ min = numbers[i]; } } return min; } bool Prime(int x){ if (x < 2) return false; for (int i = 2; i <= x / 2; i++){ if (x % i == 0) { return false; } } return true; } void printPrime(vector numbers) { for (int i = 0; i < numbers.size(); i++) { if (Prime(numbers[i])){ cout << numbers[i] << " "; } } } double avg(vector numbers){ int sum = 0; for (int i = 0; i < numbers.size(); i++) { sum += numbers[i]; } return (double)sum / numbers.size(); } int main() { string haystack = " 1 4 5 7 3 0"; string separator = " "; vector tokens = Tokenizer::split(haystack, separator); vector numbers; int temp; for (int i = 0; i < tokens.size(); i++) { temp = stoi(tokens[i]); numbers.push_back(temp); } cout << "sum: " << sum(numbers) << endl; cout << "min: " << min(numbers) << endl; cout << "Prime: "; printPrime(numbers); cout << "\nAVG: " << avg(numbers) << endl; }