Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2008, 00:46   #1
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию Помогите исправить прогу(Cреда MSDEV visual c++ 6.0)

Прога вычисляет квадратное уравнение. Прога работает, но если в корне получается отрицательный ответ то прога начинает глючить, то-есть если например вы ввели 1 2 9(a b c) то прога показывает x=-1 и x2=-1 #IND.При вводе 1 2 9 в корне получается минус, и я написал что делать в таком случае.
Код:
if (result<0)
            cout<<"x=: "<<x<<endl;
Но прога то ли этого не понимает то ли еще что то, не знаю что делать, помогите пожалуйста это исправить.

Вот код проги.

Код:
#include<iostream.h>//Kvadratnoe urovnenie
#include<math.h>
void main()
{
	double x1,x2,a,b,c,result,x;
	cout<<"Enter a,b,c: ";
	cin>>a>>b>>c;
	if (a==0)
		cout<<"'a' can't be 0";
	result=sqrt((b*b)-4*(a)*(c));
	x1=(((-b)+result)/2*(a));
	x2=(((-b)-result)/2*(a));
	x=(-b)/2*(a);
	if (result<0)
		cout<<"x=: "<<x<<endl;
	else 
		cout<<"x1=: "<<x1<<endl;
	    cout<<"x2=: "<<x2<<endl;
}
JOFRIF вне форума Ответить с цитированием
Старый 04.06.2008, 09:47   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Так как корень из отрицательного числа это мнимое число i, то Вам нужно анализировать значение выражения ((b*b)-4*(a)*(c)) (на знак) до извлечения корня, потом если оно меньше 0, извлекать корень из абсолютной величины этого значения и при выводе добавлять i. Думаю справитесь.
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 04.06.2008, 11:22   #3
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию

Цитата:
нужно анализировать значение выражения ((b*b)-4*(a)*(c)) (на знак) до извлечения корня, потом если оно меньше 0, извлекать корень из абсолютной величины этого значения и при выводе добавлять i.
Я не знаю как это сделать. Подскажите пожалуйста.
JOFRIF вне форума Ответить с цитированием
Старый 04.06.2008, 12:06   #4
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Код:
{  
    double x1,x2,a,b,c,result,x;  
    bool pr_otr;
    cout<<"Enter a,b,c: ";  
    cin>>a>>b>>c;  
    if (a==0)  
        cout<<"'a' can't be 0";  
  if (((b*b)-4*(a)*(c))<0)  
pr_otr=true;
else
pr_otr=false;

if(!pr_otr) //Тут я не совсем уверена для надежности, но не совсем эффективно (pr_otr==false)
{   result=sqrt((b*b)-4*(a)*(c));  
    x1=(((-b)+result)/2*(a));  
    x2=(((-b)-result)/2*(a));  
    cout<<"x1=: "<<x1<<endl;  
   cout<<"x2=: "<<x2<<endl;  
 }
      else   
 {
 result=sqrt(abs((b*b)-4*(a)*(c)));  
  // x1=(((-b)+result)/2*(a));  
  //x2=(((-b)-result)/2*(a));  
    cout<<"x1=: "<<=(-b)/(2*a)<<"+"<<(result/(2*a))<<"i'<<endl;  
   cout<<"x2=: "<<=(-b)/(2*a)<<"-"<<(result/(2*a))<<"i'<<endl;  
 
  } 
}
moderator: Используйте тег <CODE>, и оформляйте код красивее, а то это полная белиберда.
Неприятности приходят и уходят, а жизнь продолжается!

Последний раз редактировалось merax; 04.06.2008 в 12:51.
Sweta вне форума Ответить с цитированием
Старый 04.06.2008, 14:15   #5
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию

Большое спасибо
JOFRIF вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите исправить L_M Помощь студентам 3 08.06.2008 01:06
Задача на (MSDEV Visual c++ 6.0) JOFRIF Помощь студентам 4 07.06.2008 12:13
Помогите исправить NeiL Общие вопросы C/C++ 1 31.05.2008 13:31
Помогите исправить прогу так чтобы препода удовлетворяла))) 812 Помощь студентам 3 25.05.2008 12:34
Помогите исправить код student_63 Помощь студентам 5 13.12.2007 18:20