Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 19.12.2013, 23:43   #1 (permalink)
tane
Member
 
Регистрация: 13.02.2013
Сообщений: 19
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 68
По умолчанию Данный код выводит треугольник Паскаля. Передалайте пожалуйста

Доброго времени суток,господа!.Данный код выводит треугольник Паскаля.Передалайте пожалуйста этот код,что бы он выводил треугольник Лейбница.(рис.62)
Заранее благодарю за проделаною работу!

Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
function F(x,y:integer):integer;
begin
if (x=1)or(y=1)then F:=1
else F:=F(x-1,y)+F(x,y-1);
end;
procedure TForm1.Button1Click(Sender: TObject);
var n,i,j,k:integer;
begin
n:=Strtoint(Edit1.Text);
for i:=1 to n do
begin
for k:=1 to 2*(n-i)+1 do
label1.Caption:=label1.Caption+ ' ';
for j:=1 to i do
label1.Caption:=label1.Caption + inttostr(F(j,i-j+1))+' ';
label1.Caption:=label1.Caption+#13+#10;
end;
 
 
 
end;
 
 
procedure TForm1.Button2Click(Sender: TObject);
begin
Label1.caption:='';
end;
 
end.
Миниатюры
62.gif  
tane вне форума   Ответить с цитированием

Старый 19.12.2013, 23:43
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Можете посмотреть обсуждаемые темы, которые уже создавались ранее

Треугольник С++
Вот кейс мод на данный момент закончен
Неправильно выводит в файл, выводит всегда 0

Старый 20.12.2013, 00:27   #2 (permalink)
Gruvi
VIP user
 
Аватар для Gruvi
 
Регистрация: 10.03.2011
Сообщений: 765
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
По умолчанию

По опыту скажу, что переделывать чей-либо код тяжелее в частых случаях, нежели написать свой.

Вот программа выводит треугольник Лейбница:
Код:
unit Unit1;
 
interface
 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Forms;
 
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
TextSize: TSize;
public
{ Public declarations }
end;
 
var
Form1: TForm1;
 
implementation
 
uses Math;
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
Font.Name:='Courier New';
GetTextExtentPoint32(Canvas.Handle,'0',1,TextSize);
DoubleBuffered:=True;
OnResize:=FormPaint;
end;
 
procedure TForm1.FormPaint(Sender: TObject);
var BitMap: TBitmap;
n,i,k,j,m,t: Integer;
a: array of Integer;
xRect: TRect;
begin
BitMap:=TBitmap.Create;
BitMap.Height:=ClientHeight;
BitMap.Width:=ClientWidth;
n:=ClientHeight div (TextSize.cy*2);
SetLength(a,n);
for i:=n downto 1 do begin
k:=i;
for j:=0 to (i-1) div 2 do begin
a[j]:=k;
a[i-1-j]:=k;
k:=(k*(i-1-j)) div (j+1);
end;
if i=n then m:=Length(IntToStr(a[(i-1) div 2]));
k:=((n-i)*(m+1)*TextSize.cx) div 2;
for j:=0 to i-1 do begin
xRect:=Rect(k,(i-1)*TextSize.cy*2+TextSize.cy,k+m*TextSize.cx,(i-1)*TextSize.cy*2+TextSize.cy*2);
DrawText(BitMap.Canvas.Handle,PChar(IntToStr(a[j])),Length(IntToStr(a[j])),xRect
,DT_CENTER);
if i>1 then begin
xRect:=Rect(k,(i-1)*TextSize.cy*2,k+m*TextSize.cx,(i-1)*TextSize.cy*2+TextSize.cy);
DrawText(BitMap.Canvas.Handle,'1',1,xRect,DT_CENTER);
t:=Length(IntToStr(a[j]))*TextSize.cx;
BitMap.Canvas.MoveTo(k+(m*TextSize.cx-t) div 2,(i-1)*TextSize.cy*2+TextSize.cy);
BitMap.Canvas.LineTo(k+(m*TextSize.cx-t) div 2+t,(i-1)*TextSize.cy*2+TextSize.cy);
end;
Inc(k,(m+1)*TextSize.cx);
end;
end;
Canvas.Draw(0,0,BitMap);
BitMap.Free;
end;
 
end.
будут вопросы по коду, пиши/спрашивай в теме.
Gruvi вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 03:09.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.