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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2013, 21:05   #1
tane
Пользователь
 
Регистрация: 14.12.2013
Сообщений: 64
По умолчанию Треугольник Лейбница

Построить и вывести на экран треугольник Лейбница(Паскаль или Делфи).
Если для кого-то это "очень" просто,то напишите комментарии построчно.Может нагловато выглядеть,но ой как надо.Благодарю вас заранее!

(Треугольник Лейбница) На рисунке изображен фрагмент гармонического треугольника Лейбница. Его свойства подобны (обратны) свойствам треугольника Паскаля: числа на границе треугольника обратны последовательным натуральным числам, каждое число внутри равно сумме двух чисел, стоящих под ним.
Изображения
Тип файла: png 12.png (17.4 Кб, 36 просмотров)
Тип файла: png 1231.png (7.9 Кб, 54 просмотров)
tane вне форума Ответить с цитированием
Старый 14.12.2013, 22:57   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
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.
Коменты лень писать, разбирайтесь сами, может польза будет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 14.12.2013 в 23:00.
Аватар вне форума Ответить с цитированием
Старый 14.12.2013, 23:23   #3
tane
Пользователь
 
Регистрация: 14.12.2013
Сообщений: 64
По умолчанию

Спасибо огромное за программу.Но боюсь я без комментариев не смогу понять,так как за 1 семестр изучения в вузе Delphi,мы сделали только 6 лабораторных(Это программа,можно сказать,выше моих возможностей(на данный момент)).
tane вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Треугольник P91 Общие вопросы по Java, Java SE, Kotlin 1 28.12.2013 19:19
Треугольник midiss Visual C++ 0 02.06.2013 21:24
Треугольник С++ i.yakushev Помощь студентам 18 05.05.2011 20:55
C++(треугольник) Runner Помощь студентам 2 13.05.2010 10:32
Треугольник serega11 Помощь студентам 2 22.05.2008 09:01