PDA

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



Violina
05.04.2008, 21:08
помогите плиз..нужно сделать прогу..

Составить подпрограмму, которая в матрице Y(m,n) меняет местами 1-й и k-й столбец (1<m). C помощью подпрограммы поменять местами первый и последний столбцы матриц A(12,9), C(7,11), и третий и пятый столбц матрицы B(8,15). Исходные и преобразованные матрицы вывести на экран дисплея. Элементы входных матриц вычисляются по формулам:
A(c индексом i,j)=tg(j)+e^cos(i);
B(c индексом i,j)=sin(3.2j+4.2)+e^tg(1.5i);
C(c индексом i,j)=cos(12.4j+1).

Заранее благодарю!

C_O_D_E
05.04.2008, 21:10
Матрица задается Random'но или считывается с формы?

Violina
05.04.2008, 21:45
C_O_D_E, спасибо что откликнулась - получается матрица Y(m,n) заполняется через random - целыми числами - а матрицы А, B и С заполняются через формулы...

C_O_D_E
05.04.2008, 21:49
1)
Y(m,n) меняет местами 1-й и k-й столбец (1<m)

For i:=1 to m do begin
x:=y[i,1];
y[i,1]:=y[i,k];
y[i,k]:=x;
end;
аналогично и в
поменять местами первый и последний столбцы матриц A(12,9), C(7,11), и третий и пятый столбц матрицы B(8,15).

Violina
05.04.2008, 22:01
Спасибо! Буду пробовать!

C_O_D_E
05.04.2008, 22:03
Знаете как задавать Random'но или подсказка нужна?

Violina
05.04.2008, 22:19
Подсказка очень нужна.. помогите если можно.. я уже совсем запуталась

MOTOCoder
05.04.2008, 22:45
Возможно, Вы не совсем правильно поняли, что требуется сделать-заполнять random'ом ничего не нужно, матрицы Y как таковой в программе нет, она используется для описания принципа работы подпрограммы. В программе должны присутствовать только матрицы A, B, C , которые заполняются с помощью формул, указанных в задаче.

Violina
05.04.2008, 23:56
Спасибо Вам огромное что обьясняете мне.. и пытаетесь помочь, но не получается у меня пока

Violina
11.04.2008, 20:01
Добрый вечер! Снова обращаюсь к Вам за помощью.. ну вообщем прогу написать получилось почти.. есть небольшая проблемка у меня - помогите написать на Delphi 2 формулы sin(3.2j+4.2)+e^tg(1.5i) и tg(j)+e^cos(i) только не через Power - он у меня не работает - пишет File no found: Power.dcu Помогите плиз...

MOTOCoder
11.04.2008, 20:25
Я вообще с Delphi2 не работал, но тут нужно знать, в каком модуле находится эта функция и подключить его.
А вообще, есть такой аналог:

function pow(x,p:real):real;
begin
pow:=exp(p*ln(x));
end;

Medved
11.04.2008, 20:47
А степень там не нужна.

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.

Violina
11.04.2008, 21:24
MOTOCoder, Medved спасибо Вам за быстрый ответ! Так что получается не надо возводить по формулам в степень - просто пишешь так exp(sin(1.5*i)/cos(1.5*i)) -и это значит нe в степени tg(i)?

Medved
11.04.2008, 21:27
Exp(X)=e^x;
tg(i)=sin(i)/cos(i)
e^x=exp(sin(i)/cos(i))
Так понятней?

Violina
11.04.2008, 22:06
Medved, да понятно.. спасибо! Работает, но 2-ю строку матрицы заполняет немного нереальными числами как это исправить можно? препод 100% пристанет.. а я не могу пока исправить.. подскажите..
Код Delphi:
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.

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


for i:= 0 to n-1 do
for j: to m-1 do <===

Violina
11.04.2008, 22:49
Не знаю, но всё работает.. Вот только эти числа у меня сомнения вызывают..везде числа от -100 до 100 де-то, а вот во второй строке 130000! разве это нормально?

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

А если сомневаетесь - попробуйте переписать код через функцию pow.

Violina
11.04.2008, 23:46
Ребята, спасибо большое вам - буду щас разбираться что к чему.

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

MOTOCoder
12.04.2008, 13:00
Что именно не получается-происходит синтаксическая ошибка или выдает неверный результат?

Violina
12.04.2008, 15:06
Я прошу меня извинить, но то я ошиблась.. Проблема та же - не могу ввести правильно код, ввожу не через power - не логичные значения вводит, а через power не получается ввести...

Medved
12.04.2008, 16:15
как через power записать формулу e^tg(i)? пишу так- power(exp,tan(i)) - не работает!


power(exp(1),(sin(i)/cos(i)))

Medved
12.04.2008, 16:20
Что именно не получается-происходит синтаксическая ошибка или выдает неверный результат? Насколько я знаю паскаль и делфи не знают функции tan, надо расписывать tan(i)=sin(i)/cos(i)

Violina
12.04.2008, 17:18
Огромное Вам всем спасибо! Всё получилось! работает! Ура!!!! Осталось блок схемку намалевать! Огромнейшее спасибо - вы мне очень помогли!