Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Реализация треугольника Паскаля с помощью цикла в Delphi

Delphi , Синтаксис , Циклы

Треугольник Паскаля — это числовая пирамида, в которой каждое число (кроме первых и последних в строке) является суммой двух чисел, расположенных над ним. может быть полезна для понимания принципов работы с массивами и циклами в языке программирования Object Pascal.

В данной статье мы рассмотрим два подхода к реализации треугольника Паскаля в Delphi: первый — с использованием двумерного массива, а второй — с помощью одномерного массива и дополнительной переменной для хранения предыдущего ряда.

Подход 1: Двумерный массив

Для реализации треугольника Паскаля с помощью двумерного массива можно использовать следующий алгоритм:

  1. Создать двумерный массив размером (n+1) x (n+1), где n — количество строк в треугольнике Паскаля.
  2. Заполнить первую строку массива единицами.
  3. Для каждой строки, начиная со второй, заполнить массив следующим образом: каждая ячейка равна сумме двух ячеек над ней в предыдущей строке, а первые и последние ячейки равны единице.

Ниже представлен пример кода на Object Pascal, реализующий данный алгоритм:

program PascalTriangle2D;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
  MAX_ROWS = 10;

var
  triangle: array[0..MAX_ROWS, 0..MAX_ROWS] of Integer;

procedure PrintTriangle(n: Integer);
var
  i, j: Integer;
begin
  for i := 0 to n do
  begin
    for j := 0 to i do
      Write(triangle[i, j]:4);
    Writeln;
  end;
end;

procedure GenerateTriangle(n: Integer);
var
  i, j: Integer;
begin
  for i := 0 to n do
  begin
    triangle[i, 0] := 1;
    for j := 1 to i do
      triangle[i, j] := triangle[i - 1, j - 1] + triangle[i - 1, j];
    triangle[i, i + 1] := 1;
  end;
end;

begin
  GenerateTriangle(MAX_ROWS);
  PrintTriangle(MAX_ROWS);
  Readln;
end.

В данном примере мы создаем двумерный массив triangle размером (MAX_ROWS+1) x (MAX_ROWS+1), где MAX_ROWS — константа, определяющая количество строк в треугольнике Паскаля. Функция PrintTriangle выводит на экран треугольник Паскаля, а функция GenerateTriangle заполняет массив согласно описанному выше алгоритму.

Подход 2: Одномерный массив и дополнительная переменная

Для реализации треугольника Паскаля с помощью одномерного массива и дополнительной переменной для хранения предыдущего ряда можно использовать следующий алгоритм:

  1. Создать одномерный массив размером n x (n+1)/2, где n — количество строк в треугольнике Паскаля.
  2. Создать дополнительный массив или переменную для хранения предыдущего ряда.
  3. Заполнить первую строку массива единицами.
  4. Для каждой строки, начиная со второй, заполнить массив следующим образом: каждая ячейка равна сумме двух ячеек над ней в предыдущей строке, а первые и последние ячейки равны единице. При этом предыдущий ряд нужно обновить перед заполнением текущего.

Ниже представлен пример кода на Object Pascal, реализующий данный алгоритм:

program PascalTriangle1D;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
  MAX_ROWS = 10;

var
  triangle: array[0..MAX_ROWS * (MAX_ROWS + 1) div 2 - 1] of Integer;
  prevRow: array[0..MAX_ROWS] of Integer;

procedure PrintTriangle(n: Integer);
var
  i, j: Integer;
begin
  for i := 0 to n - 1 do
  begin
    for j := 0 to i div 2 do
      Write(triangle[i * (i + 1) div 2 + j]:4);
    Writeln;
  end;
end;

procedure GenerateTriangle(n: Integer);
var
  i, j: Integer;
begin
  for i := 0 to n - 1 do
  begin
    triangle[i * (i + 1) div 2] := 1;
    for j := 1 to i div 2 do
      triangle[i * (i + 1) div 2 + j] := prevRow[j - 1] + prevRow[j];
    if i mod 2 = 1 then
      triangle[i * (i + 1) div 2 + i div 2 + 1] := 1;
    CopyMemory(@prevRow, @triangle[i * (i + 1) div 2], (i + 1) * SizeOf(Integer));
  end;
end;

begin
  GenerateTriangle(MAX_ROWS);
  PrintTriangle(MAX_ROWS);
  Readln;
end.

В данном примере мы создаем одномерный массив triangle размером n x (n+1)/2 и дополнительный массив prevRow для хранения предыдущего ряда. Функция PrintTriangle выводит на экран треугольник Паскаля, а функция GenerateTriangle заполняет массив согласно описанному выше алгоритму.

Оба подхода позволяют реализовать треугольник Паскаля с помощью цикла в Delphi. Первый подход использует двумерный массив и подходит для случаев, когда важно иметь быстрый доступ к элементам массива по индексам. Второй подход использует одномерный массив и дополнительную переменную для хранения предыдущего ряда, что может быть полезно при ограниченных ресурсах памяти.

Создано по материалам из источника по ссылке.

В статье рассматриваются два способа реализации треугольника Паскаля в Delphi: с помощью двумерного массива и с помощью одномерного массива и дополнительной переменной для хранения предыдущего ряда.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Циклы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 17:21:19/0.0032260417938232/0