Как использовать вход для завершения программы в C ++? - PullRequest
0 голосов
/ 30 марта 2020

То, что я пытаюсь выполнить sh с помощью этой программы, заключается в том, чтобы пользователь ввел в vecor столько чисел, сколько ему хотелось бы. После того, как пользователь закончил, я бы хотел, чтобы пользователь ввел слово «нет». После того, как пользователь введет слово «нет», будут вычислены размер вектора, максимальное значение, минимальное значение и среднее значение. Моя проблема в том, что в данный момент у меня настроена программа, в случае, если пользователь вводит число «0», после чего программа завершает работу. Проблема в том, что числовой ввод вычисляется в расчете размера вектора и минимального значения. Есть ли в любом случае, где пользователь может ввести строку vaule "нет" и завершить программу вместо ввода нулевого числа?

Спасибо!

enter code here

#include <iostream>
#include<cstring>
#include<vector>
#include<algorithm>
#include<numeric>

using namespace std;

int main(){

    std::vector<double> numbers;
    std::vector<double>::iterator it;

    double number;
    cout<<"Hello! Enter as many numbers as you would like! \n When you are finished enter 0"<<endl;

    while (cin>>number){

        numbers.push_back(number);{

            while(number==0){
                for (it=numbers.begin(); it !=numbers.end(); it++)
                cout << *it<< " ";
                cout << endl;

                cout<< "The total size of the Numbers vector is: "<<numbers.size();

                double max = *max_element(numbers.begin(), numbers.end());
                cout << "\nMax Value: "<<max<<endl;

                double min = *min_element(numbers.begin(), numbers.end());
                cout << "Min Value: "<<min<<endl;

                double mean = accumulate(numbers.begin(), numbers.end(), 0) / numbers.size();
                cout <<"Mean Value: "<<mean<<endl;

                return 0;
            }

        }
        cout<<endl;
    }

} введите код

1 Ответ

0 голосов
/ 30 марта 2020

Вы можете прочитать каждую строку как std::string и проверить, является ли она no. Если это не так, преобразуйте его в double (например, std::stod) и сохраните.

Пример:

#include <iostream>
#include <string>
#include <vector>

int main() {
    std::vector<double> numbers;
    std::string line;
    while(std::getline(std::cin, line)) {
        if(line == "no") break;
        try {
            numbers.push_back(std::stod(line));
        } catch(const std::exception& ex) {
            // converting to double failed
            std::cout << ex.what() << '\n';
        }
    }
    // do your calculations
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...