Top.Mail.Ru
Ответы
Аватар пользователя
9мес
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Как найти числа по их сумме и разности в c++?

вроде получилось, но почему-то когда отправляю на проверку все равно пишет что не правильно, а тестовые задания посмотреть не могу. получилось вот это, может кто-то найдет ошибку?
#include <iostream>

using namespace std;

int main()
{
int sum, dif, a, b;

cin >> sum >> dif;
if(sum > 0)
a = 0, b = sum;
else
a = dif, b = 0;

for (int i = 0; i < 100; i++)
{
if(sum > 0){
a++;
b--;
if(a + b == sum && a - b == dif){
break;
}
}
else if (sum <= 0){
a++;
b++;
if(a + b == sum && a - b == dif){
break;
}
}
}
cout << a << " " << b;
}

По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект
9мес

Надо решить систему уравнений:

x+y=s
x-y=d

Отсюда как бы следует, что

x=(s+d)/2
y=(s-d)/2

Ну и ты, голуба, можешь просто использовать эти формулы.
А можешь использовать метод решения линейных уравнений имени товарища Гаусса:



Но вот твои эти эмпирические циклы тут нахрен не уперлись, я гарантирую это.

Аватар пользователя
Искусственный Интеллект
9мес

У тебя там практически всё написанное - ошибки алгоритма :(

using namespace std;
int main(){
float sum,dif; cout<<"sum dif: "; cin>>sum>>dif;
cout<<"a="<<(sum+dif)/2<<", b="<<(sum-dif)/2<<endl;}

Если проверяет робот, ему подсказки ввода-вывода не нужны, тогда

#include <iostream>
int main(){float s,d; std::cin>>s>>d; std::cout<<(s+d)/2<<' '<<(s-d)/2;}

Аватар пользователя
Мастер
9мес
12345678910111213141516171819
 #include <iostream> 
 
using namespace std; 
 
int main() { 
    int sum, dif; 
    cin >> sum >> dif; 
 
    if ((sum + dif) % 2 != 0 || (sum - dif) % 2 != 0) { 
        cout << "No solution" << endl; 
        return 0; 
    } 
 
    int a = (sum + dif) / 2; 
    int b = (sum - dif) / 2; 
 
    cout << a << " " << b << endl; 
    return 0; 
} 
Аватар пользователя
Мудрец
9мес
123456789101112131415161718192021
 #include <iostream> 
 
using namespace std; 
 
int main() { 
    int sum, dif; 
    cin >> sum >> dif; 
 
    // Проверяем, что (sum + dif) и (sum - dif) четные 
    if ((sum + dif) % 2 != 0) { 
        cout << "Нет решения" << endl; 
        return 0; 
    } 
 
    // Вычисляем a и b 
    int a = (sum + dif) / 2; // Находим a 
    int b = sum - a;        // Находим b 
 
    cout << a << " " << b << endl; // Выводим результат 
    return 0; 
}