2016-11-11 2 views
-2

Я хочу напечатать следующую последовательность номер:Пропуск значений в последовательности положительных целых чисел

1 2 3 6 7 8 11 12 13 16 17 18 ...

Он печатает три положительных целых чисел, затем пропускает два следующих значения, а затем повторяет процесс.

+5

Вы можете использовать modulo '%' для выполнения этого , – Franck

ответ

1

Вот простой способ просто используя заявление в for цикла:

for (int i = 1; i < 100; i += ((i%5) == 3) ? 3 : 1) 
{ 
    // ... 
} 
+0

Это C#, а не C++ –

+0

@SimonKraemer Я удалил бит C#. :) –

+0

@CherubimAnand Я знаю, но поскольку OP, очевидно, новичок, примеры не должны быть для других языков. Это приведет только к путанице. –

1

Как отметил Franck вы можете просто использовать оператор по модулю.

Оператор modulo дает вам остальную часть подразделения в результате.

0/10 = 0; 0 % 10 = 0; 
10/10 = 1; 10 % 10 = 0; 
11/10 = 1; 11 % 10 = 1; 
12/10 = 1; 12 % 10 = 2; 
20/10 = 2; 20 % 10 = 0; 
21/10 = 2; 21 % 10 = 1; 
27/10 = 2; 21 % 10 = 7; 

0 % 3 = 0; 
1 % 3 = 1; 
2 % 3 = 2; 
3 % 3 = 0; 
4 % 3 = 1; 
5 % 3 = 2; 
6 % 3 = 0; 
7 % 3 = 1; 
8 % 3 = 2; 
9 % 3 = 0; 
... 

Из вашего примера я предполагаю, что вы хотите, чтобы пропустить значения, оканчивающиеся на 4 или 9. У Вас есть 2 возможности архивировать это:

  • использование % 10 и проверить результат за то, что либо 4 или 9
  • использование % 5 и проверить результат за то, что либо 4

Результат будет выглядеть что-то вроде этого:

for (int i=1; i<=100; i++) 
{ 
    if(i%5 == 4) continue; //Skip 
    std::cout << i << " "; 
} 
Смежные вопросы