Ошибка при вводе нулевых коэффициентов в диофантовом уравнении
Если программа получает на вход a = 0, b = 0, c - любое, то приложение вылетает. Ошибка появляется в этой строке if (c % gcd != 0)
public void print_solution(int a, int b, int c) {
if (a == 0 && b == 0) {
// Условие бесконечности решений
if (c == 0) {
rezult.setText("x - любое число " +
System.getProperty("line.separator") + "y - любое число");
}
// Условие отсутствия решений
else {
rezult.setText("Решений нет");
}
}
int gcd = gcd_extend(a, b);
// Условие отсутствия решений
if (c % gcd != 0) {
rezult.setText("Решений нет");
} else {
// Решение
rezult.setText("x = " + x * (c / gcd) +
System.getProperty("line.separator") + "y = " + y * (c / gcd));
}
}
int x, y;
public int gcd_extend(int a, int b) {
// Базовый вариант
if (b == 0) {
x = 1;
y = 0;
return a;
} else {
int g = gcd_extend(b, a % b);
int x1 = x, y1 = y;
x = y1;
y = x1 - (a / b) * y1;
return g;
}
}
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Вставьте return в конце первого if в print_solution
else {
rezult.setText("Решений нет");
}
return;
}
иначе код выполняется дальше с нулевыми a и b