У меня проблемы с циклом while, который я просто не могу понять, почему он не будет работать так, как хотелось бы - PullRequest
0 голосов
/ 19 мая 2019

Сделал цикл времени, и я не получил результат, я думаю, что я должен получить.

Я немного отладил и ничего не получил.Visual Studio 2019 говорит, что мне пораи выложите его, если число было «самым маленьким еще» или «самым большим еще», но оно не работает.не могли бы вы указать, что я делаю не так?Я новичок, будь умным.

Ответы [ 3 ]

0 голосов
/ 19 мая 2019

Синтаксис вектора:

vector vectorName (size);

vector nums (0)

В вашем коде nums есть вектор нулевого размера.

Вектор - это динамический массив.

Массив нулевого размера не имеет смысла.

Проверьте эту ссылку , чтобы увидеть различные способы объявления вектора.

0 голосов
/ 20 мая 2019

предположим, что порядок кода должен быть изменен, блок if-elseif-else должен быть помещен перед push_back и sort,

или, если вы действительно хотите сохранить порядок, if-elseif-else следует исправить, как if (num_enter == nums.front ()) ... else if (num_enter == nums.back ()) .. остальное

только тогда вы сможете узнать, был ли ваш входной номер самым большим или самым маленьким.

И инициализировать как вектор <double> nums (0) немного странно, просто использовать вектор <double> nums отлично

0 голосов
/ 19 мая 2019

В векторе только одно число. Ни одно из условий не выполняется, если вы введете одно, одно не больше одного или меньше единицы, следовательно, оно ничего не печатает, потому что вы не обрабатываете этот случай. Добавьте блок else, который печатает, если числа равны, тогда, надеюсь, вам будет понятно, почему это происходит.

попробуйте это

// Example program
#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main() {
    double num_enter;
    vector<double> nums(0);

    while (cin >> num_enter) {
    nums.push_back(num_enter);

    //sort(nums.begin(), nums.end());
         // Lets say you entered 1
        // 1 < 1 -> false
        if (num_enter < nums.front()) 
        {
            cout << num_enter << " is the smallest one yet.\n" << endl;
        }

        // 1 > 1 -> false
        else if (num_enter > nums.back())
        {
            cout << num_enter << " is the biggest one yet.\n" << endl;

        } 
        else // 1 == 1 
        {
            cout << "Numbers are equal" << endl;   
        }
        return 0;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...