Помогите пожалуйста с задачей delphi

MOTOCoder
Сообщения: 542
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

11 апр 2008, 20:25

Я вообще с Delphi2 не работал, но тут нужно знать, в каком модуле находится эта функция и подключить его.
А вообще, есть такой аналог:
[syntax='Delphi']
function pow(x,p:real):real;
begin
pow:=exp(p*ln(x));
end;
[/syntax]
Ни что так не ограничивает фантазию программиста, как компилятор...
Medved
Сообщения: 250
Зарегистрирован: 14 фев 2008, 20:51
Контактная информация:

11 апр 2008, 20:47

А степень там не нужна.
[syntax='Delphi']
Progaram lalala
var a,b:integer;

Function first_formula(i,j:real):real;
Begin
first_formula:=sin(3.2*j+4.2)+exp(sin(1.5*i)/cos(1.5*i));
End;

Function second_formula(i,j:real):real;
Begin
second_formula:=sin(j)/cos(j)+exp(cos(i));
End;

Begin
Read(A,B);
Writeln('First:',first_formula(a,b),' Second:',second_formula(a,b));
End.
[/syntax]
Ваши руки совершили идиотскую ошибку и будут оторваны!
[OK]
Violina
Сообщения: 13
Зарегистрирован: 05 апр 2008, 20:57

11 апр 2008, 21:24

MOTOCoder, Medved спасибо Вам за быстрый ответ! Так что получается не надо возводить по формулам в степень - просто пишешь так exp(sin(1.5*i)/cos(1.5*i)) -и это значит нe в степени tg(i)?
Medved
Сообщения: 250
Зарегистрирован: 14 фев 2008, 20:51
Контактная информация:

11 апр 2008, 21:27

Exp(X)=e^x;
tg(i)=sin(i)/cos(i)
e^x=exp(sin(i)/cos(i))
Так понятней?
Ваши руки совершили идиотскую ошибку и будут оторваны!
[OK]
Violina
Сообщения: 13
Зарегистрирован: 05 апр 2008, 20:57

11 апр 2008, 22:06

Medved, да понятно.. спасибо! Работает, но 2-ю строку матрицы заполняет немного нереальными числами как это исправить можно? препод 100% пристанет.. а я не могу пока исправить.. подскажите..
Код Delphi:[HTML]unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
StringGrid1: TStringGrid;
Edit1: TEdit;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var
B:array of array of real;
i,j:integer;
n,m:integer;
begin
edit1.Text:=inttostr(n);
edit2.Text:=inttostr(m);

n:=8;
m:=15;
setlength(B,n,m);
stringgrid1.RowCount:=n;
stringgrid1.ColCount:=m;
for i:= 0 to n-1 do
for j: to m-1 do

begin
B[i,j]:=sin(3.2*j+4.2)+exp(sin(1.5*i)/cos(1.5*i));;
stringgrid1.Cells[j,i]:=FormatFloat('0.00',B[i,j]);
end;
end;


end.[/HTML]
Medved
Сообщения: 250
Зарегистрирован: 14 фев 2008, 20:51
Контактная информация:

11 апр 2008, 22:39

Если код правильный, а числа нереальные, то исправлять ничего не надо - уж такие и есть эти числа и придраться нельзя. Только вопрос - как у вас код откомпилировался? Ведь в этом участке вообще syntax error:

Код: Выделить всё

for i:= 0 to n-1 do
 for j: to m-1 do    <===
Ваши руки совершили идиотскую ошибку и будут оторваны!
[OK]
Violina
Сообщения: 13
Зарегистрирован: 05 апр 2008, 20:57

11 апр 2008, 22:49

Не знаю, но всё работает.. Вот только эти числа у меня сомнения вызывают..везде числа от -100 до 100 де-то, а вот во второй строке 130000! разве это нормально?
MOTOCoder
Сообщения: 542
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

11 апр 2008, 22:55

Ну, во-первых, возможно все, а во-вторых-в приведенном коде действительно есть ошибка там, где указал Medved.

А если сомневаетесь - попробуйте переписать код через функцию pow.
Ни что так не ограничивает фантазию программиста, как компилятор...
Violina
Сообщения: 13
Зарегистрирован: 05 апр 2008, 20:57

11 апр 2008, 23:46

Ребята, спасибо большое вам - буду щас разбираться что к чему.
Violina
Сообщения: 13
Зарегистрирован: 05 апр 2008, 20:57

12 апр 2008, 10:39

Доброе утро! Это снова я - опять прошу помощи.. подскажите плиз.. как через power записать формулу e^tg(i)? пишу так- power(exp,tan(i)) - не работает!
Ответить