Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.04.2008, 15:29
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
Вопрос Помогите решить задачу в Delphi...

Помогите решить простенькую задачу... ато я в Delphi почтиничего не соображаю

Дано: b=-2.5; db=0.3. Z вычислить по формуле
Z=b^3+ln(2/(b^2+b+2)). Считать Z до тех пор, пока выражение под знаком логорифма больше 0.045. Определить k - количество вычесленных Z. Вывести на экран b, Z, k.

Заранее благодарен!!
  #2  
Старый 04.04.2008, 18:20
Andrevv Andrevv вне форума
Прохожий
 
Регистрация: 03.11.2007
Сообщения: 9
Репутация: 10
Лампочка

Если db - приращение величины b, то текст следующий:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  b,db,log,z:real;
  k:integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
b:=-2.5;
db:=0.3;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
k:=0;
log:=1E30;
while log>0.045 do
begin
log:=2/(b*b+b+2);
z:=b*b*b+ln(log);
memo1.Lines.Add('z = '+floattostr(z));
k:=k+1;
b:=b+db;
end;
memo1.Lines.Add('b = '+floattostr(b));
memo1.Lines.Add('k = '+floattostr(k));
end;
end.

Последний раз редактировалось Andrevv, 04.04.2008 в 18:37.
  #3  
Старый 04.04.2008, 19:16
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

Спасибо огромное! Выручил))) Тока можешь мне немного обьяснить - в 2-х словах - ато у меня не хочет работать прога - зависает! - я по ходу дела что-то не добавил - какой -то компонент или фиг его знает -
**procedure FormCreate(Sender: TObject);** - это не понятно немнго - можешь обьяснить что это означает, если не труно... компоненты я тока Memo и Button добавил...

Последний раз редактировалось AndrYxo, 04.04.2008 в 19:47.
  #4  
Старый 04.04.2008, 20:16
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Цитата:
Сообщение от AndrYxo
Спасибо огромное! Выручил))) Тока можешь мне немного обьяснить - в 2-х словах - ато у меня не хочет работать прога - зависает! - я по ходу дела что-то не добавил - какой -то компонент или фиг его знает -
**procedure FormCreate(Sender: TObject);** - это не понятно немнго - можешь обьяснить что это означает, если не труно... компоненты я тока Memo и Button добавил...
По видимому у Вас не работает потому что Вы заново создали Button и memo. Надо нажать на button и обрновить ссылку на процедуру TForm1.Button1Click(Sender: TObject); И конечно нажать двойным щелчком на форме, чтобы сработала процедура TForm1.FormCreate(Sender: TObject);
  #5  
Старый 04.04.2008, 21:13
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

Andrevv и MegaPiha огромное вам спасибо! Выручили! Не работало потому, что 2-й щелчек на форме не сделал! Спасибо что подсказали - а если строку memo1.Lines.Add('z = '+floattostr(z)); вывести из цикла, то оно считает только одно значение - а по условию надо что бы считало до того, пока не станет меньше 0.045. Еще раз большое спасибо)
  #6  
Старый 04.04.2008, 21:30
Violina Violina вне форума
Прохожий
 
Регистрация: 04.04.2008
Сообщения: 8
Репутация: 10
По умолчанию

Добрый вечер! Ребята, помогите плиз..нужно сделать прогу..

Составить подпрограмму, которая в матрице 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).

Заранее благодарю!
  #7  
Старый 04.04.2008, 20:13
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Цитата:
Сообщение от Andrevv
Если db - приращение величины b, то текст следующий:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  b,db,log,z:real;
  k:integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
b:=-2.5;
db:=0.3;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
k:=0;
log:=1E30;
while log>0.045 do
begin
log:=2/(b*b+b+2);
z:=b*b*b+ln(log);
memo1.Lines.Add('z = '+floattostr(z));
k:=k+1;
b:=b+db;
end;
memo1.Lines.Add('b = '+floattostr(b));
memo1.Lines.Add('k = '+floattostr(k));
end;
end.

Предлагаю подправить. Согласно задаче надо вывести Z,b,k. Надо строчку
Код:
 memo1.Lines.Add('z = '+floattostr(z));
вывести из цикла.
  #8  
Старый 08.04.2008, 17:54
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

народ кто-то может мне обьяснить плиз что значит строка log:=1E30; взятая от сюда? Думаю ее надо в блок схему включать или нет?

Код:
begin
k:=0;
log:=1E30;
while log>0.045 do
begin
log:=2/(b*b+b+2);
z:=b*b*b+ln(log);
memo1.Lines.Add('z = '+floattostr(z));
  #9  
Старый 08.04.2008, 18:27
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Цитата:
Сообщение от AndrYxo
народ кто-то может мне обьяснить плиз что значит строка log:=1E30; взятая от сюда? Думаю ее надо в блок схему включать или нет?

Код:
begin
k:=0;
log:=1E30;
while log>0.045 do
begin
log:=2/(b*b+b+2);
z:=b*b*b+ln(log);
memo1.Lines.Add('z = '+floattostr(z));
Просто начальное значение, чтобы выполнялось условие цикла while. Можете любое другое написать, устраивающее условию. А вообще лучше бы использовать repeat until.
  #10  
Старый 08.04.2008, 18:31
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

MegaPiha Спасибо)
  #11  
Старый 09.04.2008, 11:20
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

Это снова я - нужна помощь умных людей 8) Не подскажите как можно сделать что бы например с однй формы я мог заходить еще на 4 - тоесть при нажатии на button1 мне открывалась форма с 1-й задачей и на 2 - со второй и так далее - я делаю, например на форме 2 ставлю Enabled False - а на первой форме задаю на button1 Form2.Show - при этом форма появляется -но не работает - тоесть просто появляется - но ничего не считает - не подскжите как сделать что бы появлялась форма рабочая?
  #12  
Старый 16.04.2008, 11:03
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

У меня уже чувство, что я на финише - последний вопрос думаю - у меня исходную матрицу выодит не по столбикам и строкам, а просто в столбик, не подскажите что я не так делаю, вот код:

Код:
begin
writeln(outfile, 'Матрица B (исходная):');
n:=8;
m:=15;
setlength(B,n,m);
stringgrid1.RowCount:=n;
stringgrid1.ColCount:=m;
for i:=0 to n-1 do
begin
  for j:=0 to m-1 do
  begin
    begin
    B[i,j]:=sin(3.2*j+4.2)+power(exp(1),tan(i));
    stringgrid1.Cells[j,i]:=FormatFloat('0.00',B[i,j]);

    write(outfile, FormatFloat('0.00',B[i,j])+ '   ')

      end;
        writeln(outfile, '');
    end;
end;
end;
  #13  
Старый 16.04.2008, 11:12
ja-maik-a ja-maik-a вне форума
Прохожий
 
Регистрация: 09.02.2008
Сообщения: 47
Репутация: 10
По умолчанию

лишний begin в теле цикла
  #14  
Старый 16.04.2008, 11:18
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

о.. точно спасибо) Помогло - в общем думаю это все! Огромное спасибо всем, кто мне помогал, в особенности MegaPiha - это человек с огромными неврами, что смог меня так долго вытерпить! Огромное спасибо)
  #15  
Старый 17.04.2008, 16:50
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

Снова здравствуйте... большое спасибо за помощь - все правильно... но осталось кое-что додеалть - а я не знаю как - вернее не получается - вот код проги котрая считает значения до определенного момента - и мне ее надо как-то оббнулить - щас она считает до момента как надо и останавливается - но если опять нажать на батон она будет продолжать считать что не надо уже... не подскажите как мне ее обнулить? Вот код:
Код:
unit Unit4;

interface

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

type
  TForm4 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Button2: TButton;
    Button3: TButton;
    Label1: TLabel;
    Image1: TImage;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form4: TForm4;
  b,db,log,z:real;
  k:integer;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm4.FormCreate(Sender: TObject);
begin
b:=-2.5;
db:=0.3;
end;

procedure TForm4.Button1Click(Sender: TObject);
begin
k:=0;
log:=1E30;
while log>0.045 do
  begin
  log:=2/(b*b+b+2);
  Z:=b*b*b+ln(log);
  memo1.Lines.Add('Z = '+floattostr(z));
  k:=k+1;
  b:=b+db;
  end;

memo1.Lines.Add('b = '+floattostr(b));
memo1.Lines.Add('k = '+floattostr(k));

end;
procedure TForm4.Button2Click(Sender: TObject);
begin
Memo1.Clear;
end;

procedure TForm4.Button3Click(Sender: TObject);
begin
Form1.Show;
Form4.Close;
end;

end.
Закрытая тема


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:28.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter