|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
![]() |
|
Опции темы | Опции просмотра |
![]() |
#11 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
![]() Прежде всего, х и у вводить не надо — программа их должна НАЙТИ и вывести. Вообще программа должна строиться так: 1. Вводим коэффициенты. 2. Ищем главный определитель системы (det) и еще два: detX и detY (вспоминаем школу, правило Крамера и т.п.) 3. Если главный определитель по абсолютной величине превышает 0.0001, то выводим x = detX/det; y = detY/det. Всё! |
![]() |
![]() |
![]() |
|
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Если есть свободная минутка - можете посмотреть схожие топики Помогите решить, пожалуйста Помогите, пожалуйста, решить. Паскаль Помогите, пожалуйста, решить Помогите, пожалуйста, решить задачку |
![]() |
#12 (permalink) |
Дизайнер-конструктор
Регистрация: 16.01.2017
Адрес: Санкт-Петербург
Сообщений: 2,103
Сказал(а) спасибо: 73
Поблагодарили 160 раз(а) в 30 сообщениях
Репутация: 32111
|
![]()
Не знаю почему, но мне вдруг вспомнилось как я узнал, что существует корень из -1)
__________________
Делать то, что доставляет удовольствие — значит быть свободным. Вольтер |
![]() |
![]() |
![]() |
#13 (permalink) |
Новичок
Регистрация: 05.10.2017
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
![]()
#include "stdafx.h"
#include<iostream> using namespace std; int main() { int x, y, a1, a2, b1, b2, c1=0, c2=0; cin >> x >> y >> a1 >> a2 >> b1 >> b2 >> c1 >> c2; if (a1*b2 - a2*b1 >= 0.0001&&a2*b1 - a1*b2 >= 0.0001) { cout << a1*x + b1*y + c1; cout << a2*x + b2*y - c2; } system("pause"); return 0; } |
![]() |
![]() |
![]() |
#14 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
![]()
И для чего и для кого я, спрашивается, распинался про решение системы, определители и т.п?..
Всё — мимо. Ну как знаете. Ну бред же кромешный!!! Значит, так. Приведу решение Вашей задачи на языке Паскаль (на СИ, к сожалению, не пишу). Может быть, поможет разобраться: Код:
Var a1,b1,a2,b2,c1,c2,det,detX,detY:Real; Begin Readln(a1,a2,b1,b2,c1,c2); det:=a1*b2-a2*b1; detX:=c1*b2-c2*b1; detY:=a1*c2-a2*c1; If Abs(det)>0.0001 then begin writeln('x = ',detX/det:0:5); writeln('y = ',detY/det:0:5); end else writeln('No solution!'); Readln End. ![]() |
![]() |
![]() |
![]() |
#15 (permalink) |
Новичок
Регистрация: 05.10.2017
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
![]()
#include "stdafx.h"
#include<iostream> using namespace std; int main() { int x, y, a1, a2, b1, b2, c1, c2,x1; cin >> a1 >> a2 >> b1 >> b2 >> c1 >> c2; x1 = a1*b2 - a2*b1; x = c1*b2 - c2*b1; y= a1*c2 - a2*c1; if (x1 >= 0.0001); { cout << 'x==',c1*b2-c2*b1/ a1*b2 - a2*b1; cout << 'y==', a1*c2 - a2*c1/ a1*b2 - a2*b1; } system("pause"); return 0; |
![]() |
![]() |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
![]() |
#17 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
![]()
Нет!
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. Вот это: Цитата:
В первой строке сосчитает 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; } (За правильность СИ-шного синтаксиса не отвечаю, но, в принципе, как-то так). |
|
![]() |
![]() |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
![]() |
Опции темы | |
Опции просмотра | |
|
|