c ++, как печатать 1-10 после этого, если я введу один из них, число исчезнет - PullRequest
0 голосов
/ 27 сентября 2018

как печатать 1-10 после этого, если я введу один из них, число исчезнет.

ex:
Output: 1 2 3 4 5 6 7 8 9 10
Input:1
Output:2 3 4 5 6 7 8 9 10
Input:5
Output:2 3 4 6 7 8 9 10

(только с использованием while или do-while или for) -> (не использует массив)

Ответы [ 3 ]

0 голосов
/ 27 сентября 2018
#include <bitset>
#include <iostream>

...

constexpr int N = 10;
std::bitset<N+1> mask {-1ul};

while (true) {
    int inp;
    cin >> inp;
    if (inp < 1 || inp > N)
        continue;

    mask.reset(inp);
    for (int i = 1; i < N; ++i) {
        if (mask.test(i)) {
            std::cout << i << '\n';
        }
    }
}
0 голосов
/ 27 сентября 2018

Я проверил этот код на VS2017.Я верю, что вы получите представление о том, как это сделать.Конечно, вы можете повысить эффективность исходного кода.

#include "stdafx.h"
#include <iostream>
#include <bitset>
using namespace std;

int main()
{
    constexpr int iBitNum = 10;
    std::bitset<iBitNum + 1> mask;
    mask.set();
    int _size = mask.count();
    for (int i = 0; i < _size; ++i)
    {
        mask[i] = 0;
    }

    int inp = 0;    
    int b = 0;
    while (true)
    {
        cout << "Enter the number which you do not want to display" << endl;
        cin >> inp;
        cout << "Here is the result" << endl;
        for (size_t i = 0; i < iBitNum; i++)
        {
            if (i+1==inp)
            {
                continue;
            }
            b = mask[i] | i+1;
            cout << b << " ";
        }
        cout << endl;
    }

    return 0;
}
0 голосов
/ 27 сентября 2018
//let's say that the variable x contains the inputted number, 5 in this case

for (int i = 1; i <= 10; i++){
    if (i != x)
        printf("%d ", i);
}

Вывод будет:

1 2 3 4 6 7 8 9 10
...