Показать сообщение отдельно
Старый 16.10.2017, 18:58   #17 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от DeviL_Hell99 Посмотреть сообщение
это правильно ?
Нет!
1. Зачем для определителей и искомых величин использовать одни и те же переменные? Что мешает, как я предлагаю, ввести
int x, y, a1, a2, b1, b2, c1, c2, det,detX,detY;
2. Тогда определители запишутся так:
det = a1*b2 - a2*b1;
detX= c1*b2 - c2*b1;
detY= a1*c2 - a2*c1;
3. Вот это:
Цитата:
cout << 'x==',c1*b2-c2*b1/ a1*b2 - a2*b1;
cout << 'y==', a1*c2 - a2*c1/ a1*b2 - a2*b1;
совсем никуда не годится! Потому что без скобок машина поймёт это так:
В первой строке сосчитает c1*b2, затем из полученного результата вычтет (c2*b1/ a1*b2) и, наконец, вычтет a2*b1. Правильно так:
cout << 'x==',(c1*b2 - c2*b1)/(a1*b2 - a2*b1);
cout << 'y==',(a1*c2 - a2*c1)/(a1*b2 - a2*b1);
3. Но главное — если уж Вы уже сосчитали определители, зачем же это делать повторно?! Можно просто и компактно:
if (det >= 0.0001); {тут, правда, надо не det, a |det|. Как это оформить в СИ — не знаю, Вы уж сами}
{
cout << 'x==', detX/det;
cout << 'y==', detY/det;

}

(За правильность СИ-шного синтаксиса не отвечаю, но, в принципе, как-то так).
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070