Задача. Среди заданных целых чисел [latex]k[/latex] , [latex]l[/latex] , [latex]m[/latex] найти пары кратных.
k | l | m | Комментарий |
0 | 0 | 0 | Нет пар |
0 | 0 | 1 | Нет подходящих пар |
2 | 4 | 6 | Две пары |
3 | 3 | 3 | Нет пар |
3 | 3 | 6 | Две пары |
-2 | -4 | -8 | Нет пар |
-2 | 4 | 8 | Одна пара |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#include <iostream> using namespace std; int main() { int k, l, m; scanf("%d%d%d", &k, &l, &m); if ((k<=0&&l<=0)||(k<=0&&m<=0)||(l<=0&&m<=0)) { printf("Нет подходящих пар"); } else { if((k>0)&&(l>0)&&(k!=l)&&((k%l==0)||(l%k==0))) { printf("(%d %d)", k, l); } if((k>0)&&(m>0)&&(k!=m)&&((k%m==0)||(m%k==0))) { printf("(%d %d)", k, m); } if((l>0)&&(m>0)&&(m!=l)&&((l%m==0)||(m%l==0))) { printf("(%d %d)", m, l); } } return 0; } |
Для выполнения задания необходимо воспользоваться операцией «остаток от деления». Если в результате получается 0, то два числа кратные.
— Неплохо бы дать определение кратного числа. Вы ведь учитываете, что числа должны быть натуральными?
— Не нужно так сложно проверять на ноль. Сразу проверьте на положительность в одном операторе — если (k > 0) && (l > 0) && (m >0), то решаем.
— Зачем пустые else? Уберите их, пожалуйста.
Готово.
— в тестах не указаны кратные пары
— вывод программы в случае нескольких пар не вразумителен
— нет ссылки на код в ideone
— «число не может быть кратным само себе» — скорее наоборот
— «два числа кратные»… Прочтите всё же определение. Одно число может быть кратным другого. Кратными друг другу могут быть только равные числа.