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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.09.2012, 19:48   #1
Enathris
Новичок
Джуниор
 
Регистрация: 08.09.2012
Сообщений: 5
Вопрос Не верный алгоритм

Всем привет , прошу вашей помощи , ибо уже не знаю что делать :/
Задали задание сделать пример на языке object pascal в среде delphi .
Написал код , сижу уже не знаю что делать , может подскажите . Почему решил что неправильно , дело в том что в примере фигурируют 3 переменные , x y z и для проверки своего кода дали значения этих переменных и ответ , в общем он не сходиться ... вот пример :
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    X: TLabel;
    Y: TLabel;
    Z: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Memo1: TMemo;
    Button1: TButton;
    BitBtn1: TBitBtn;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var x,y,z,a,b,c,h,s:extended;
begin

x:=StrToFloat(Edit1.Text);
y:=StrToFloat(Edit2.Text);
z:=StrToFloat(Edit3.Text);
s:=x-Pi/6;
a:=(2*cos(s))/(0.5+(sqr(sin(y))));
b:=(1+(sqr(z)))/(3-(sqr(z))/5);
c:=a*b;
Memo1.Lines.Add('x='+Edit1.Text+
     '    y='+Edit2.Text+'    z='+Edit3.Text+
     '   Result = '+FloatToStrF(c,fffixed,9,4));

end;

end.
Значения :
x=14.26, y=-1.22, z=3.5´10-2 Result=0.564846.
Enathris вне форума Ответить с цитированием
Старый 08.09.2012, 20:02   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вроде так должно быть:
Код:
b:=1+sqr(z)/(3-sqr(z)/5);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.09.2012, 20:13   #3
Enathris
Новичок
Джуниор
 
Регистрация: 08.09.2012
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Вроде так должно быть:
Код:
b:=1+sqr(z)/(3-sqr(z)/5);
а разве что-то изменится? вроде скобки ничего не меняют же
просто не могу проверить ибо забыл сохранить , сейчас быстренько сделаю все и скажу , только мне кажется что ничего не будет :\
Enathris вне форума Ответить с цитированием
Старый 08.09.2012, 20:42   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
вроде скобки ничего не меняют же
Наоборот. Еще как меняют.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.09.2012, 01:34   #5
Enathris
Новичок
Джуниор
 
Регистрация: 08.09.2012
Сообщений: 5
По умолчанию

помогло , а можешь пояснить почему? я думал скобки расставляют приоритеты , но видимо что то не так , расскажи пожалуйста
Enathris вне форума Ответить с цитированием
Старый 09.09.2012, 01:48   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Вы не видите разницы между (1 + дробь) и дробью с числителем (1 + ...)?
p51x вне форума Ответить с цитированием
Старый 09.09.2012, 01:48   #7
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Цитата:
Сообщение от Enathris Посмотреть сообщение
помогло , а можешь пояснить почему? я думал скобки расставляют приоритеты , но видимо что то не так , расскажи пожалуйста
может так будет более понятнее:
Код:
(
	1+(
		sqr(
			z
		)
	)
)
/(
	3-(
		sqr(
			z
		)
	)
	/5
)
или вот так
(1+(sqr(z)))/(3-(sqr(z))/5)
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 09.09.2012, 16:14   #8
Enathris
Новичок
Джуниор
 
Регистрация: 08.09.2012
Сообщений: 5
По умолчанию

Еще такой же вопрос по поводу другого примера , пример :
Условие x=2.444, y=0.869´10-2, z=-0.13´103, Result=-0.49871.
Код:
unit Unit1;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var x,y,z,a,b,s,h,c,d,f,j:extended;
begin
x:=StrToFloat(Edit1.Text);
y:=StrToFloat(Edit2.Text);
z:=StrToFloat(Edit3.Text);
a:=exp(ln(x)*y+1)+exp(ln(2.72)*y-1);
b:=1+x*abs(y-(sin(z)/cos(z)));
c:=1+abs(y-x);
d:=exp(ln(abs(y-x))*2)/2;
f:=exp(ln(abs(y-x))*3)/3;
h:=a/b*c+d-f;


Memo1.Lines.Add(FloatToStrF(h,fffixed,9,5));

end;

end.
в числителе левой дроби есть буква "е" . её значение гуглил , ибо так его не дано :\
Спасибо всем кто ответил по поводу 1 вопроса . И заранее спасибо по поводу этого !
Enathris вне форума Ответить с цитированием
Старый 09.09.2012, 16:26   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

ln(e) = 1
http://bpascal.ru/download/desc/436.php
Цитата:
Однако, необходимо учитывать частные случаи когда основание или степень отрицательные числа, либо когда один из них является нулем. Также необходимо учесть тот факт, что при возведении отрицательного числа в четную степень, результат становится положительным
Кроме того:
a:=exp(ln(x)*(y+1))+exp(y-1);(нужны скобки в первом слагаемом)
Проверка косинуса на неравенство нулю.
Проверка b на неравенство нулю.
d:=sqr(abs(y-x))/2;(возможно, быстрее)
f:=abs(y-x);f:=f*f*f/3;(возможно, быстрее)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 09.09.2012 в 16:36.
BDA вне форума Ответить с цитированием
Старый 09.09.2012, 16:41   #10
Enathris
Новичок
Джуниор
 
Регистрация: 08.09.2012
Сообщений: 5
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
a:=exp(ln(x)*(y+1))+exp(y-1);(нужны скобки в первом слагаемом)
помогло . огромное спасибо
Enathris вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработайте алгоритм методом пошаговой детализации и программу, реализующую этот алгоритм. iamhated Помощь студентам 1 15.01.2012 16:24
[WPF С#] Графический редактор. Теория реализации. Направьте на верный путь. Casper-SC Общие вопросы .NET 0 11.06.2010 12:15
Направьте на верный путь... wepoTWR Помощь студентам 11 28.12.2009 09:36
Направьте на верный путь wepoTWR Помощь студентам 1 13.12.2009 13:47