Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > C/C++/С#


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

Сударь, извините, но Вы пытаетесь вывести какую-то чушь.
Прежде всего, х и у вводить не надо — программа их должна НАЙТИ и вывести.
Вообще программа должна строиться так:
1. Вводим коэффициенты.
2. Ищем главный определитель системы (det) и еще два: detX и detY (вспоминаем школу, правило Крамера и т.п.)
3. Если главный определитель по абсолютной величине превышает 0.0001, то выводим
x = detX/det; y = detY/det.
Всё!
Vladimir_S вне форума   Ответить с цитированием

Старый 10.10.2017, 22:05
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Если есть свободная минутка - можете посмотреть схожие топики

Помогите решить, пожалуйста
Помогите, пожалуйста, решить. Паскаль
Помогите, пожалуйста, решить
Помогите, пожалуйста, решить задачку

Старый 10.10.2017, 22:12   #12 (permalink)
Tiger-Cub
Дизайнер-конструктор
 
Аватар для Tiger-Cub
 
Регистрация: 16.01.2017
Адрес: Санкт-Петербург
Сообщений: 2,103
Сказал(а) спасибо: 73
Поблагодарили 160 раз(а) в 30 сообщениях
Репутация: 32111
По умолчанию

Не знаю почему, но мне вдруг вспомнилось как я узнал, что существует корень из -1)
__________________
Делать то, что доставляет удовольствие — значит быть свободным.
Вольтер
Tiger-Cub вне форума   Ответить с цитированием
Старый 10.10.2017, 22:13   #13 (permalink)
DeviL_Hell99
Новичок
 
Регистрация: 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;
}
DeviL_Hell99 вне форума   Ответить с цитированием
Старый 11.10.2017, 12:22   #14 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

И для чего и для кого я, спрашивается, распинался про решение системы, определители и т.п?..
Всё — мимо.
Ну как знаете.

Цитата:
Сообщение от DeviL_Hell99 Посмотреть сообщение
c1=0, c2=0;
Цитата:
Сообщение от DeviL_Hell99 Посмотреть сообщение
cin >> x >> y
Ну бред же кромешный!!!
Значит, так.
Приведу решение Вашей задачи на языке Паскаль (на СИ, к сожалению, не пишу). Может быть, поможет разобраться:
Код:
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.
Результат работы программы:
aa01.jpg
Vladimir_S вне форума   Ответить с цитированием
Старый 16.10.2017, 17:38   #15 (permalink)
DeviL_Hell99
Новичок
 
Регистрация: 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;
DeviL_Hell99 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 16.10.2017, 17:38   #16 (permalink)
DeviL_Hell99
Новичок
 
Регистрация: 05.10.2017
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

это правильно ?
DeviL_Hell99 вне форума   Ответить с цитированием
Старый 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
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 17:37.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.