Чистое решение для уменьшения в течение цикла - PullRequest
4 голосов
/ 15 марта 2019
for (int x = 0; x < 16; x=x + 5){


    for (int y = x + 4; y >= x; y--){
        printf("The integer is %d\n", y);
    }
}

Приведенный выше код уменьшается в 5 раз, затем переходит на 5 позиций вперед и повторяет процесс, и так далее.

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

Выходные данные включены для демонстрации требуемого шаблона:

The integer is 4                                                                                                                 
The integer is 3                                                                                                                 
The integer is 2                                                                                                                 
The integer is 1                                                                                                                 
The integer is 0                                                                                                                 
The integer is 9                                                                                                                 
The integer is 8                                                                                                                 
The integer is 7                                                                                                                 
The integer is 6                                                                                                                 
The integer is 5                                                                                                                 
The integer is 14                                                                                                                
The integer is 13                                                                                                                
The integer is 12                                                                                                                
The integer is 11                                                                                                                
The integer is 10                                                                                                                
The integer is 19                                                                                                                
The integer is 18                                                                                                                
The integer is 17                                                                                                                
The integer is 16                                                                                                                
The integer is 15  

1 Ответ

5 голосов
/ 15 марта 2019

Вы можете использовать по модулю и делению, как это. Обратите внимание, что границу тоже нужно изменить, иначе выходные данные не будут идентичны!

#include <stdio.h>

int main(void) {     
    for (int x = 0; x < 20; x ++) {
        printf("The integer is %d\n", x / 5 * 5 + 4 - x % 5);
    }
}

Если вы считаете, что код требует объяснения, тогда ваша версия лучше. По крайней мере, на мой взгляд, это так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...