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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2011, 01:26   #1
xcripz
 
Регистрация: 13.04.2010
Сообщений: 5
По умолчанию Умножение двух чисел а в результате 0...

Прошу помощи и свежего взгляда, а то бред какой-то получается...
Код:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, TeEngine, Series, TeeProcs, Chart;

type
  TForm1 = class(TForm)
    Edit2: TEdit;
    Button1: TButton;
    Label1: TLabel;
    Edit3: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Edit4: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    Bevel1: TBevel;
    Edit1: TEdit;
    Label8: TLabel;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  A, B, i: Integer;
  Loss, lambda, f, L, sigma, alfa: real;

implementation

{$R *.dfm}

function findLambda(f:real):real;
begin
result:=300/f;
end;

function findSigma(f:real):real;
begin
result:=-9769.9+9260.3*exp(0.00013011*f);
end;

function findAlfa(a, b:integer; f:real):real;
begin
  result:=1000*(1.585*((1/b)+sqr(findLambda(f))/(2*Exp(3*ln(a))))*1/sqr(findLambda(f)*findSigma(f)*(1-sqr(findLambda(f)/(2*a)))));
end;

function findLoss(a, b:integer; f,L:real):real;
begin
result:=(findAlfa(a,b,f)*L);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
    x,y:real;
begin

  try
  A:=StrToInt(trim(Edit1.Text));
  except label2.font.color:=clRed;
  end;

  try
  B:=StrToInt(trim(Edit2.Text));
  except label8.Caption:=('Проверьте значение высоты!');
  end;

  try
  L:=StrToFloat(trim(Edit3.Text));
  except label8.Caption:=('Проверьте значение длины!');
  end;

  try
  f:=StrToInt(trim(Edit4.Text));
  except label8.Caption:=('Проверьте значение частоты!');
  end;

 Image1.Canvas.Pen.Color:=clSilver;
 Image1.Canvas.MoveTo(20, Image1.Height-20);
 Image1.Canvas.LineTo(Image1.Width-20, Image1.Height-20);
 Image1.Canvas.MoveTo(20, 20);
 Image1.Canvas.LineTo(20, Image1.Height-20);

 for i:=1 to Image1.Width do
 begin
   x:=i;
   y:=findLoss(a,b,f,x);
   //y:=sin(x)*50;
   Image1.Canvas.Pixels[20 + trunc(x),Image1.Height - 20 + round(y)]:=clRed;
 end;

 Sigma:=findSigma(f);
 Alfa:=findAlfa(a,b,f);
 Lambda:=findLoss(a,b,f,l);

Label1.Caption:=('Sigma=')+FloatToStrF(sigma,ffGeneral,4,2)+('  См/м')+(#10+#13)+('Alfa=')+FloatToStrF(alfa,ffGeneral,4,2)+(' *0.001  дБ/м')+(#10+#13)+('Loss=')+FloatToStrF(Loss,ffGeneral,4,2)+('  дБ');
end;

end.
В результате выводятся значения Сигмы и Альфы, а потери (Loss) почему-то равны нулю! и соответственно не рисуется график. Помогите разобраться новичку, с дельфи знаком всего 4 дня, был небольшой опыт работы только в паскале)
xcripz вне форума Ответить с цитированием
Старый 17.10.2011, 03:49   #2
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Пошагово пройдись по коду и найди ошибку.
TwiX вне форума Ответить с цитированием
Старый 17.10.2011, 11:53   #3
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

А почему Вы ищете
Код:
 Sigma:=findSigma(f);
 Alfa:=findAlfa(a,b,f);
 Lambda:=findLoss(a,b,f,l);
Sigma, Alfa и Lambda, а выводите:

Label1.Caption:=('Sigma=')+FloatToS trF(sigma,ffGeneral,4,2)+(' См/м')+(#10+#13)+('Alfa=')+FloatToStrF (alfa,ffGeneral,4,2)+(' *0.001 дБ/м')+(#10+#13)+('Loss=')+FloatToStrF (Loss,ffGeneral,4,2)+(' дБ');
Loss ??? Lambda
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 17.10.2011, 18:35   #4
xcripz
 
Регистрация: 13.04.2010
Сообщений: 5
По умолчанию

JUDAS, большое спасибо, перепутал
А выводом графика не поможете? (или нужно открывать новую тему?) почему то отказывается правильно чертить - вместо того чтобы подниматься наверх, с увеличением L, уходит в минус. Где допустил оплошность??
xcripz вне форума Ответить с цитированием
Старый 17.10.2011, 23:30   #5
xcripz
 
Регистрация: 13.04.2010
Сообщений: 5
По умолчанию

Попробовал использовать TChart. Стало лучше, но и тут какой-то косяк - вместо прямой линии ступеньки какие-то(
Изображения
Тип файла: jpg Untitled-1.jpg (91.0 Кб, 63 просмотров)
xcripz вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Умножение двух матриц на С++ machines Visual C++ 0 16.05.2011 01:20
умножение двух двоичных чисел!!! 2008kedr2008 Общие вопросы C/C++ 1 12.05.2011 13:28
Сложение двух десятичных положительных чисел. целых чисел))) PEro_man Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 01.12.2010 12:40
Умножение двух длинных целых чисел, представленных двунаправленными связанными списками Rifler Паскаль, Turbo Pascal, PascalABC.NET 0 28.05.2010 19:31
Умножение двух чисел в p-ичной системе счисления - turbo pascal oxygen2007rus Помощь студентам 1 13.12.2009 16:00