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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2011, 21:01   #1
aless23
Пользователь
 
Регистрация: 04.04.2011
Сообщений: 19
По умолчанию Задача по С++

Помогите пожалуйста...суть проблемы следующая:Необходимо написать программу на 3-языках,на двух я уже сделал...но на С++-не получается...
Задача следующая:
Дано действительное положительное число Е.Методом деления отрезка пополам найти приближенное значение корня уравнения f(x)=0.Абсолютная погрешность найденного значения не должна перевышать Е.Рядом с уравнением f(x)=0,дополнительно указан отрезок,который содержит корень.
(E=0,001)
(4+x^2)(e^x-e^-x)=18,..............[1.2,1.3]

Заранее очень благодарен!!!
aless23 вне форума Ответить с цитированием
Старый 04.04.2011, 22:46   #2
VadikV
Форумчанин
 
Аватар для VadikV
 
Регистрация: 08.01.2011
Сообщений: 226
По умолчанию

ну так покажи, что ты там уже сделал на другом языке и что не получается на с++ перевести. посмотрим и подскажем
icq 223-630-454
e-mail vysotskiy@list.ru
сайт http://www.big-library.net/
VadikV вне форума Ответить с цитированием
Старый 05.04.2011, 16:29   #3
aless23
Пользователь
 
Регистрация: 04.04.2011
Сообщений: 19
Радость

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, StdCtrls, jpeg, ExtCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Button1: TButton;
    BitBtn1: TBitBtn;
    Image1: TImage;
    Label5: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
function F(x:real):real;
begin
F:=(4+sqr(x))*(exp(x)-exp(-x));
end;
var a,b,c,x,e:real;
i:integer;
begin
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
e:=StrToFloat(Edit3.Text);
repeat
c:=(a+b)/2;
if F(a)*F(c)<=0 then b:=c
else a:=c;
until b-a<e;
x:=(a+b)/2;
Edit4.Text:=FloatToStr(x);
end;

end.
Это код программы на Delphi:

Последний раз редактировалось ACE Valery; 06.04.2011 в 01:42.
aless23 вне форума Ответить с цитированием
Старый 05.04.2011, 16:47   #4
ololo-schoolboy
Форумчанин
 
Регистрация: 25.12.2010
Сообщений: 247
По умолчанию

Код:
double l=1;
double r=x;
double m;
while (fabs(l-r)>eps) {
m=(l+r)/2;
if (m*m<x) l=m;
else r=m;
}
ololo-schoolboy вне форума Ответить с цитированием
Старый 05.04.2011, 21:58   #5
aless23
Пользователь
 
Регистрация: 04.04.2011
Сообщений: 19
По умолчанию

Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 float a,b,e,x,F,c;
 float f(float x);
if(((Edit1->Text).Length()==0)||((Edit2->Text).Length()==0))
    {
      MessageDlg("Необходимо ввести значения",mtInformation,TMsgDlgButtons()<< mbOK,0);
 if ((Edit1->Text).Length()==0)
      Edit1->SetFocus();
 else
      Edit2->SetFocus();
 return;
 }
 a=StrToFloat(Edit1->Text);
 b=StrToFloat(Edit2->Text);
 e=StrToFloat(Edit3->Text);
{
while (abs(f(x))>e)
{
 c=(a+b)/2;
 if (f(a)*f(c)<=0)
 b=c;
 else a=c;
 }
if((b-a)<e)
{
x=(a+b)/2;
}
 Label4->Caption="Результат= "+ FloatToStrF(x,ffGeneral,7,2);
 }
 }
//-------------------------------------------------

Так написал но всё равно выдаёт ошибку

[Linker Error] Unresolved external 'f(float)' referenced from D:\С+++ 3\UNIT1.OBJ

Притом ещё не вставил саму функцию так как незнаю как правильно её описать...
Пожалуйста помогите!Заранее оОоочень признателен,и благодарен

Последний раз редактировалось ACE Valery; 06.04.2011 в 01:47.
aless23 вне форума Ответить с цитированием
Старый 10.04.2011, 23:27   #6
aless23
Пользователь
 
Регистрация: 04.04.2011
Сообщений: 19
По умолчанию

//---------------------------------------------------------------------------

#include <vcl.h>
#include <math.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
float a,b,e,z,f,x;
if(((Edit1->Text).Length()==0)||((Edit2->Text).Length()==0))
{
MessageDlg("Íåîáõîäèìî ââåñòè çíà÷åíèÿ",mtInformation,TMsgDlgButt ons()<< mbOK,0);
if ((Edit1->Text).Length()==0)
Edit1->SetFocus();
else
Edit2->SetFocus();
return;
}
a=StrToFloat(Edit1->Text);
b=StrToFloat(Edit2->Text);
e=StrToFloat(Edit3->Text);
try
{
x=(a+b)/2;
return pow(x,4)+(0.5*pow(x,3))-(4*pow(x,2))-(3*x)- 0.5;
if (x>e)
b=x;
else a=x;
x=(a+b)/2;
}
catch (EZeroDivide &e)
{
ShowMessage("");
Edit2->SetFocus();
return x;
}
Label4->Caption="Ðåçóëüòàò= : "+ FloatToStrF(f,ffGeneral,7,2); }
//-------------------------------------------------

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if((Key >='0')&&(Key<='9'))
return;
//---------------------------------------------------------------------------
if(Key == DecimalSeparator)
{
if ((Edit1->Text).Pos(DecimalSeparator) !=0)
Key = 0;
return;
}
if(Key == VK_BACK)
return;
if (Key == VK_RETURN)
{
Edit2->SetFocus();
return;
}
}

void __fastcall TForm1::Edit2KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if ((Key >= '0')&&(Key <='9')) return;
//---------------------------------------------------------------------------
if(Key == DecimalSeparator) {
if((Edit2->Text).Pos(DecimalSeparator) !=0)
Key=0;
return;
}
if(Key == VK_BACK)
return;
if (Key==VK_RETURN)
{
Button1->SetFocus();
return;
}
Key=0;
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------


void __fastcall TForm1::EditChange(TObject *Sender)
{
Label4->Caption ="";
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)
{
Label4->Caption="";
Edit1->Text="";
//---------------------------------------------------------------------------
Edit2->Text="";
}


После написанного выдает только такие ошибки:
[C++ Error] Unit1.cpp(37): E2467 '_fastcall TForm1::Button1Click(TObject *)' cannot return a value
[C++ Warning] Unit1.cpp(38): W8066 Unreachable code
[C++ Error] Unit1.cpp(47): E2467 '_fastcall TForm1::Button1Click(TObject *)' cannot return a value

Подскажите пожалуйста,что это может быть?
aless23 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача минимизации дисбаланса на линии сборки (задача минимакса) LenZab Microsoft Office Excel 13 13.03.2011 22:51
Задача Александр123456 Фриланс 6 16.09.2010 13:37
задача hrusha2006 Помощь студентам 4 14.09.2010 21:54