Почему я получаю вывод «1» между другими выходными линиями? - PullRequest
0 голосов
/ 24 января 2020

Я очень новичок в C ++, и я пытаюсь сделать простую программу для чтения чисел, и она функциональна. Тем не менее, я продолжаю получать «1» вход между моими другими выходными линиями. Как я могу удалить эти 1 с?

Вот мой код:

    #include <stdio.h>
    #include <iostream>
    using namespace std;

    int main()
    {
        printf("\nThe following program should enter integer numbers until a negative number.\n");
        printf("The output is the smallest number input as well as the number of numbers.\n\n");
        printf("Please enter a number -----> ");

        int n = 0;
        int num;
        cin >> num;
        int smallest = num;


        while (num >= 0)
        {
            n++;
            if (num < smallest)
            {
                int smallest = num;
            }

            cout << "Please enter another number ----->  " << (cin >> num) << endl;
        }


        while (num < 0)
        {
            cout << "Negative number entered. Calculating Results...\n\n";
            cout << "Of " << n << " numbers read, the smallest number is " << smallest << ".\n";
            return 0;
        }

    }

И вывод выглядит следующим образом (я случайно вводю некоторые тестовые числа):

    The following program should enter integer numbers until a negative number.
    The output is the smallest number input as well as the number of numbers.

    Please enter a number -----> 3
    Please enter another number ----->  4
    1
    Please enter another number ----->  8
    1
    Please enter another number ----->  -1
    1
    Negative number entered. Calculating Results...

    Of 3 numbers read, the smallest number is 3.

'' '

Как убрать эти единицы и почему они происходят?

Ответы [ 3 ]

1 голос
/ 24 января 2020
(cin >> num)

Это выражение выполняет две функции:

  1. Поток ввода cin ожидает ввода пользователя и помещает это значение в num.
  2. Перегрузка оператора для >> на istream возвращает istream&, ссылку на экземпляр cin.
    (Вот почему вы можете повторить оператор >> в одной строке, чтобы получить несколько значения.)

Это выражение находится в месте, где оператор cout << ожидает аргумент, поэтому происходит преобразование из istream& в какой-либо печатный символ при добавлении 1 в поток cout.

Причина, по которой 1 находится на новой строке, заключается в том, что используемый вами терминал / консоль требует использования клавиши Enter (которая добавляет новую строку) для ввода значения.

0 голосов
/ 24 января 2020

Как вам удалось скомпилировать этот код?

Do c. cpp: 26: 60: ошибка: нет совпадения для оператора «<<» (типы операндов: «std») :: basic_ostream 'и' std :: basic_istream :: __ istream_type {aka std :: basic_istream} ') cout << "Пожалуйста, введите другой номер ----->" << (cin >> num) << endl; </p>

Я должен изменить эту строку:

    cout << "Please enter another number ----->  " << (cin >> num) << endl;

на эту:

    cout << "Please enter another number ----->  ";
    cin >> num;
    cout << endl;

, чтобы сделать код скомпилированным, по крайней мере для меня.

Кроме того, последнее в то время как l oop не нужно, поскольку, если num не больше или равно нулю, это может быть только отрицательное число.

0 голосов
/ 24 января 2020

Я попробовал это в моей консоли c ++, и мне пришлось внести изменения в строку 25. Вместо -

cout << "Please enter another number ----->  " << (cin >> num) << endl;

Я использовал это -

cout << "Please enter another number ----->  ";
cin >> num;

И не было явные сообщения об ошибках. Кроме того, нет 1 с.

Я немного обеспокоен фактическим кодом, хотя. Лог c неверен.

...