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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2014, 18:44   #1
Иван12354
 
Регистрация: 25.10.2013
Сообщений: 5
По умолчанию Не правильно считает

нужно что бы в программе это уравнение считалось. Программа его считает, только постоянно выводит корень из отрицательного числа, а деление на 0 не хочет. Посмотрите пожалуйста может кто то сможет подсказать в чем ошибка

1.png

вот код программы
Код:
#include <vcl.h>
#include <math.h>
#include <windows.h>
#pragma hdrstop
#include "Lab1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
         Button1->Enabled=False ;
}

//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  float a,b,x,y; int r;
   a=StrToFloat(LabeledEdit1->Text);
   b=StrToFloat(LabeledEdit2->Text);
   x=StrToFloat(LabeledEdit3->Text);
{
   if ((x-b)<0) r=MessageBox(0,"Корень отрицательного числа!","Ошибка!", mbYes|MB_ICONERROR );  
       else
 {
        if  (x=0) int t=MessageBox(0,"Делении на ноль!","Ошибка!", mbYes|MB_ICONERROR);
        else  y=sqrt(x-b)/(a*x)*cos(3*x)+b;
        
       if (x<=0)     y=x+(a*b)/log(1-x);
         
  }
}
   Memo1->Lines->Add("a="+FloatToStr(a)+ "  b="+FloatToStr(b)+ "  х="+FloatToStr(x));
   Memo1->Lines->Add("Результат: y=" + FloatToStrF(y ,ffGeneral,5,8));
   Memo1->Lines->Add("___________________________");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LabeledEdit1KeyPress(TObject *Sender, char &Key)
{
if ((Key >='0') && (Key <='9') ||(Key=='-') || (Key==VK_BACK))
        Key == ',';
    else
     Key = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LabeledEdit2KeyPress(TObject *Sender, char &Key)
{
if ((Key >='0') && (Key <='9') ||(Key=='-') || (Key==VK_BACK))
        (Key == ',');
             else
                Key = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LabeledEdit3KeyPress(TObject *Sender, char &Key)
{
if ((Key >='0') && (Key <='9') ||(Key=='-') || (Key==VK_BACK))
        (Key == ',');
             else
                Key = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LabeledEdit1Change(TObject *Sender)
{
  if ((LabeledEdit1->Text).Length()==0)
        Button1->Enabled=False ;
          else Button1->Enabled=True;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LabeledEdit2Change(TObject *Sender)
{
if ((LabeledEdit2->Text).Length()==0)
        Button1->Enabled=False ;
          else Button1->Enabled=True;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LabeledEdit3Change(TObject *Sender)
{
if ((LabeledEdit3->Text).Length()==0)
        Button1->Enabled=False ;
          else Button1->Enabled=True;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
LabeledEdit1->Clear();
LabeledEdit2->Clear();
LabeledEdit3->Clear();
LabeledEdit1->SetFocus();
}

Последний раз редактировалось Stilet; 31.05.2014 в 19:09.
Иван12354 вне форума Ответить с цитированием
Старый 31.05.2014, 21:55   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Во первых у вас условие что х > 0 .
Получается что еще нужно дополнительное условие что b < X
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 31.05.2014, 23:08   #3
nikolay1982
Пользователь
 
Регистрация: 31.12.2013
Сообщений: 47
По умолчанию

Цитата:
Код:
 if  (x=0) int t=MessageBox(0,"Делении на ноль!","Ошибка!", mbYes|MB_ICONERROR);
Ошибка! присваивание!x=0!xДолжно x==0.
Есть и такой стиль
Код:
 if  (0==x) MessageBox(0,"Делении на ноль!","Ошибка!", mbYes|MB_ICONERROR);
nikolay1982 вне форума Ответить с цитированием
Старый 01.06.2014, 12:33   #4
Иван12354
 
Регистрация: 25.10.2013
Сообщений: 5
По умолчанию

Спасибо за помощь
Иван12354 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разложение в ряд. Не правильно считает. Sorento2 Помощь студентам 8 30.05.2013 11:52
по ключам не правильно считает ) Black_Wolf Общие вопросы Delphi 2 23.12.2012 19:44
не правильно считает byMary Помощь студентам 4 08.12.2011 22:00
не правильно считает программа baris Паскаль, Turbo Pascal, PascalABC.NET 2 11.06.2011 09:23
считает не правильно rapgamer Помощь студентам 3 15.09.2010 14:23