@Pbalordorbaor

Как лучше было бы написать код?

#include <iostream>

int main() {
    int a = 4668;
    int b = 10415;
    int c = 0;
    int minValue = 0;
    for(int i=a; i<b; i++) {
        if(i%3==0 || i%11==0) {
            if(i%2!=0 && i%13!=0 && i%22!=0 && i%33!=0) {
                c++;
                if(c == 1) {
                    minValue = i;
                }
            }
        }
    }
    std::cout << c << minValue << "\n";
}

Мне кажется что все эти вложенные if попахивают говнецом, может ли кто то привести пример более красивого кода?
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
nikkyhud
@nikkyhud
Пишу скрипты на python
1) Нет смысла делать вложенные условные операторы.
2) Проверять не кратность на 22 бессмысленно, ибо мы уже проверяем на не кратность 2.
3) В функциях типа int всегда должен быть возврат числа типа int, в точке входа (main) используют return 0.

#include <iostream>
using namespace std;

int main() {
    int a = 4668;
    int b = 10415;
    int c = 0;
    int minValue = 0;
    for(int i=a; i<b; i++) {
        if(i%13!=0 && i%2!=0 && i % 33!=0 && (i%3==0 || i%11==0)) {
            c++;
            if(c == 1) {
                minValue = i;
            }
        }
    }
    cout << c << minValue << endl;

    return 0;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
zagayevskiy
@zagayevskiy
Android developer at Yandex
такие вложенные ифы можно заменить одним ифом с конъюнкцией условий.
с, c++ и проверки можно заменить на break в конце тела ифа.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы