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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2008, 16:52   #1
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Gauges, math, ComCtrls, Grids, ExtCtrls;


type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    Bevel1: TBevel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  const
  lambdo=14;
  T=0.06;
  N=1000000;

var
  Form1: TForm1;
  U_i, V_j, Q: array[1..N] of real;
  H: array[0..N] of integer;
  i,j, col_H: integer;
  q_anal, q_prog: real;
implementation

{$R *.DFM}

function Okr_six(n:real):string;
begin
 Okr_six:=floattostrf(n,ffFixed,length(floattostr(n)),6);
end;

function Okr_two(n:real):string;
begin
 Okr_two:=floattostrf(n,ffFixed,length(floattostr(n)),2);
end;

procedure line(x1,y1,x2,y2: integer);
begin
 Form1.Canvas.MoveTo(x1,y1);
 Form1.Canvas.LineTo(x2,y2);
end;


procedure TForm1.Button1Click(Sender: TObject);
var
a, x, y: integer;
c, sum: real;
begin
 Form1.Canvas.Brush.Color:=clBtnFace;
 j:=1; i:=1; sum:=0; H[0]:=1; col_H:=1;
 q_anal:=1/(1+T*lambdo);
 c:=1/lambdo;
 Randomize;

//********************Генерируем входной и выходной потоки**********************

 for a:=1 to N do
   begin
     U_i[a]:=-c*log10(random);
     V_j[a]:=-t*log10(random);
   end;

//***********************Симулируем работу БВЗ**********************************

 for i:=1 to N do
   begin
     sum:=sum+U_i[i];
     if V_j[j]<sum then
       begin
         H[i]:=1;
         sum:=0;
         inc(j);
         inc(col_H);
       end else H[i]:=0;
     q[i]:=col_H/i;
   end;

//**********************Строим оси графика**************************************

 Line(20,60,20,280);
 Line(20,280,350,280);
 Line(20,80,24,80);
 Line(285,276,285,280);
 Line(64,276,64,280);
 Line(108,276,108,280);
 Line(152,276,152,280);
 Line(196,276,196,280);
 Line(240,276,240,280);
 Form1.Canvas.TextOut(8,75,'1');
 Form1.Canvas.TextOut(8,282,'0');
 Form1.Canvas.TextOut(61,282,'1');
 Form1.Canvas.TextOut(104,282,'2');
 Form1.Canvas.TextOut(148,282,'3');
 Form1.Canvas.TextOut(193,282,'4');
 Form1.Canvas.TextOut(237,282,'5');
 Form1.Canvas.TextOut(282,282,'6');
 Form1.Canvas.TextOut(7,55,'Q');
 Form1.Canvas.TextOut(335,282,'Ln(x)');
 Line(15,280-round(q_anal*200),350,280-round(q_anal*200));
 Label1.Caption:='Q аналитическое: '+Okr_six(q_anal);

//**********************Выводим точки графика**************************************
 for a:=1 to N do
   begin
     x:=round(log10(a)*50+20);
     y:=280-round(q[a]*200);
     Form1.Canvas.Pixels[x, y]:=clBlue;
   end;

 Label2.Caption:='Q программное: '+floattostr(q[1000000]);
 Form1.StringGrid1.Cells[1,1]:='  '+Okr_two((abs(q[10]-q_anal)/q_anal)*100)+'%';
 Form1.StringGrid1.Cells[1,2]:='  '+Okr_two((abs(q[100]-q_anal)/q_anal)*100)+'%';
 Form1.StringGrid1.Cells[1,3]:='  '+Okr_two((abs(q[1000]-q_anal)/q_anal)*100)+'%';
 Form1.StringGrid1.Cells[1,4]:='  '+Okr_two((abs(q[10000]-q_anal)/q_anal)*100)+'%';
 Form1.StringGrid1.Cells[1,5]:='  '+Okr_two((abs(q[100000]-q_anal)/q_anal)*100)+'%';
 Form1.StringGrid1.Cells[1,6]:='  '+Okr_two((abs(q[1000000]-q_anal)/q_anal)*100)+'%';
end;

procedure TForm1.FormCreate(Sender: TObject);
var
count :integer;
begin
 Form1.StringGrid1.Cells[0,0]:='Ln(N)';
 Form1.StringGrid1.Cells[1,0]:='Погрешность';
 for count:=1 to 6 do Form1.StringGrid1.Cells[0,count]:='  '+inttostr(count);
end;

end.
нам просто в колледже дают код программы к примеру ) и его надо по существующим правилам оптимизировать ) как еще можно, уже мыслев не хватает
1 старый программист, лучше новых 2-х

Последний раз редактировалось Stilet; 12.05.2008 в 17:05.
Droid вне форума Ответить с цитированием
Старый 12.05.2008, 17:23   #2
А. Долматов
Форумчанин
 
Аватар для А. Долматов
 
Регистрация: 15.02.2007
Сообщений: 183
По умолчанию

Цитата:
Line(20,60,20,280);
Line(20,280,350,280);
Line(20,80,24,80);
Line(285,276,285,280);
Line(64,276,64,280);
Line(108,276,108,280);
Line(152,276,152,280);
Line(196,276,196,280);
Line(240,276,240,280);
Form1.Canvas.TextOut(8,75,'1');
Form1.Canvas.TextOut(8,282,'0');
Form1.Canvas.TextOut(61,282,'1');
Form1.Canvas.TextOut(104,282,'2');
Form1.Canvas.TextOut(148,282,'3');
Form1.Canvas.TextOut(193,282,'4');
Form1.Canvas.TextOut(237,282,'5');
Form1.Canvas.TextOut(282,282,'6');
Form1.Canvas.TextOut(7,55,'Q');
Form1.Canvas.TextOut(335,282,'Ln(x) ');
Line(15,280-round(q_anal*200),350,280-round(q_anal*200));
Label1.Caption:='Q аналитическое: '+Okr_six(q_anal);
это можно в функцию записать. и вызывать ее когда надо.
Знать все невозможно, в силу того, что жить бы стало неинтересно.
А. Долматов вне форума Ответить с цитированием
Старый 12.05.2008, 18:05   #3
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

хм... это можно в while Form1.Canvas do загнать, а еще что можно сделать ?
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Старый 12.05.2008, 19:49   #4
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Okr_six, Okr_two лучше сделать одной функцией. siz, two - явно напрашивается в параметр.

Код:
Form1.StringGrid1.Cells[1,2]:='  '+Okr_two((abs(q[100]-q_anal)/q_anal)*100)+'%';   
 Form1.StringGrid1.Cells[1,3]:='  '+Okr_two((abs(q[1000]-q_anal)/q_anal)*100)+'%';   
 Form1.StringGrid1.Cells[1,4]:='  '+Okr_two((abs(q[10000]-q_anal)/q_anal)*100)+'%';   
 Form1.StringGrid1.Cells[1,5]:='  '+Okr_two((abs(q[100000]-q_anal)/q_anal)*100)+'%';   
 Form1.StringGrid1.Cells[1,6]:='  '+Okr_two((abs(q[1000000]-q_anal)/q_anal)*100)+'%';
- цикл

Код:
  const  
  lambdo=14;   
  T=0.06;   
  N=1000000;   
  
var  
  Form1: TForm1;   
  U_i, V_j, Q: array[1..N] of real;   
  H: array[0..N] of integer;   
  i,j, col_H: integer;   
  q_anal, q_prog: real;
Зачем локальные данные и константы вынесены в interface ?.

Последний раз редактировалось alexBlack; 12.05.2008 в 19:54.
alexBlack вне форума Ответить с цитированием
Старый 12.05.2008, 20:25   #5
Дикий
Пользователь
 
Аватар для Дикий
 
Регистрация: 10.05.2008
Сообщений: 89
По умолчанию

такая же просьба, только с куском кода!!! Если сможете.
в моей теме. рядом.
...у зверя свобода её лишь ищи...

Дикий 21.08.2005

Последний раз редактировалось Дикий; 12.05.2008 в 20:41. Причина: исправляю
Дикий вне форума Ответить с цитированием
Старый 12.05.2008, 20:36   #6
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Дикий, зачем Вы задаете вопрос в чужой теме ? Создайте свою.
А еще лучше в той, которая уже есть. Вопрос ведь продолжение предыдущего про or, да ? Повторите вопрос там и опишите смысл этих операций. Наверняка это можно сделать проще.
alexBlack вне форума Ответить с цитированием
Старый 12.05.2008, 20:40   #7
Дикий
Пользователь
 
Аватар для Дикий
 
Регистрация: 10.05.2008
Сообщений: 89
По умолчанию

alexBlack, потому что просьба одна и та же... оптимизировать.

хотя, в чем то я и не прав. согласен

исправляю
...у зверя свобода её лишь ищи...

Дикий 21.08.2005
Дикий вне форума Ответить с цитированием
Старый 12.05.2008, 20:56   #8
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

Ок сенкс попробую )
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизировать перегрузку операторов Иллидан Общие вопросы C/C++ 14 24.04.2008 11:18
Помогите оптимизировать! Altera Общие вопросы Delphi 6 25.03.2008 20:09
Оптимизировать код NeiL Помощь студентам 2 21.02.2008 08:57
как может оптимизировать в фунцию? w1ze Помощь студентам 2 07.01.2008 23:19
Помогите оптимизировать сайт Nadejda HTML и CSS 4 07.01.2007 21:04