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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.08.2019, 18:41   #1
deinpavel
 
Регистрация: 25.07.2019
Сообщений: 5
Вопрос Перевод программы из C# в Паскаль

Народ такой вопрос. Есть прога на С#, а нужно сделать ее в Паскаль. Помогите плиииииззззз.



Код:
using System;
/// <summary>
/// Список. 
/// Автор: Петррр
/// </summary>
class GList
{
    int[] array;
    /// <summary>
    /// Констуктор
    /// </summary>
    public GList()
    {
        array = new int[0];
    }
    /// <summary>
    /// Количество элементов в списке
    /// </summary>
    public int Count
    {
        get
        {
            return array.Length;
        }
    }
    /// <summary>
    /// Добавление нового элемента в список
    /// </summary>
    /// <param name="value">Элемент который необходимо вставить</param>
    public void Add(int value)
    {
        int[] buf = new int[array.Length];
        for (int i = 0; i < buf.Length; i++)
            buf[i] = array[i];
        array = new int[buf.Length + 1];
        for (int i = 0; i < buf.Length; i++)
            array[i] = buf[i];
        array[array.Length - 1] = value;
    }
    /// <summary>
    /// Вставляет новый элемент в укзананную позицию.
    /// </summary>
    /// <param name="value">Новый элемент</param>
    /// <param name="pos">Позиция</param>
    public void Insert(int value, int pos)
    {
        if (pos > array.Length || pos < 0)
            throw new Exception("Неверная позиция");
        int[] buf = new int[array.Length];
        for (int i = 0; i < buf.Length; i++)
            buf[i] = array[i];
        array = new int[buf.Length + 1];
 
        for (int i = 0; i < buf.Length; i++)
            array[i] = buf[i];
 
        int buffer = array[pos];
        for (int i = array.Length - 2; i >= pos; i--)
        {
            int d = array[i];
            array[i + 1] = d;
        }
        array[pos] = value;
    }
    /// <summary>
    /// Вывод списка.
    /// </summary>
    public void Show()
    {
        for (int i = 0; i < array.Length; i++)
            Console.Write(array[i] + " ");
    }
    /// <summary>
    /// Удаление элемента по указанной позиции
    /// </summary>
    /// <param name="pos">Позиция. Нумерация начинается с нуля.</param>
    public void Remove(int pos)
    {
        if (pos > array.Length || pos < 0)
            throw new Exception("Неверная позиция");
 
        int[] buf = new int[array.Length];
 
        for (int i = 0; i < buf.Length; i++)
            buf[i] = array[i];
 
        array = new int[buf.Length - 1];
 
        for (int i = 0; i < pos; i++)
            array[i] = buf[i];
 
        for (int i = pos; i < buf.Length - 1; i++)
            array[i] = buf[i + 1];
    }
    /// <summary>
    /// Удаляет заданный элемент из списка.
    /// </summary>
    /// <param name="element">Элемент списка.</param>
    public void RemoveElement(int element)
    {
        for (int i = 0; i < array.Length; i++)
            if (array[i] == element)
                Remove(i);
    }
    /// <summary>
    /// Получения массива элементов.
    /// </summary>
    /// <returns></returns>
    public int[] ToArray()
    {
        return array;
    }
    /// <summary>
    /// Максимальный элемент в списке.
    /// </summary>
    public int Maximum
    {
        get
        {
            int max = array[0];
            for (int i = 0; i < array.Length; i++)
                if (array[i] > max)
                    max = array[i];
            return max;
        }
    }
    /// <summary>
    /// Максимальный элемент в списке.
    /// </summary>
    public int Minimum
    {
        get
        {
            int min = array[0];
            for (int i = 0; i < array.Length; i++)
                if (array[i] < min)
                    min = array[i];
            return min;
        }
    }
    /// <summary>
    /// Сумма элементов списка.
    /// </summary>
    public int Sum
    {
        get
        {
            int sum = 0;
            for (int i = 0; i < array.Length; i++) 
                sum += array[i];
            return sum;
        }
    }
}
 
class Program
{
    static void Main(string[] args)
    {
        GList l = new GList();
        l.Add(1);
        l.Add(2);
        l.Add(3);
        l.Insert(4, 1);
        l.Show();
        l.Remove(1);
        l.RemoveElement(1);
        Console.WriteLine();
        l.Show();
        Console.WriteLine();
        Console.WriteLine(l.Sum);
        Console.ReadKey(true);
    }

Последний раз редактировалось Вадим Мошев; 15.08.2019 в 13:06.
deinpavel вне форума Ответить с цитированием
Старый 08.08.2019, 17:27   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Моё предложение:
1. Забить на этот код;
2. Скачать Т.А. Павловская, Программирование на ЯВУ, Паскаль (была в разделе Литература, см. первую строку тут);
3. Найти параграф "Списки" и выполнить имеющийся там пример;
4. Разобраться с ним и модифицировать под свою задачу.

Специальное предложение - Фриланс. Тут рядом. Возможно будет быстро и не дорого.

Если время есть, то можно и C# подучить. Параллельное изучение языков - это хорошо.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 18.08.2019, 15:01   #3
akaDelphi
Новичок
Джуниор
 
Регистрация: 10.05.2019
Сообщений: 2
По умолчанию

Код:
type
  IntArray = array of Integer;

type
  GList = class
    fArray : IntArray;
  public
    constructor Create();
    function Count():Integer;
    procedure Add(value : Integer);
    procedure Insert(value, pos : Integer);
    procedure Remove(pos : Integer);
    procedure RemoveElement(element : Integer);
    function ToArray(): IntArray;
    function Minimum():Integer;
    function Maximum():Integer;
    procedure Show();
    function Sum() : Integer;
  end;

constructor GList.Create();
begin
  inherited Create;
  SetLength(fArray, 0);
end;

function GList.Count():Integer;
begin
  result := Length(fArray);
end;

procedure GList.Add(value : Integer);
var
  buff : array of Integer;
  i : Integer;
begin
  SetLength(buff, Length(fArray));
  for i := 0 to Length(buff) -1 do
    buff[i] := fArray[i];
  SetLength(fArray, Length(fArray) + 1);
  for i := 0 to Length(buff) - 1 do
    fArray[i] := buff[i];
  fArray[Length(fArray) -1] := value
end;

procedure GList.Insert(value, pos : Integer);
var
  i : Integer;
begin
  if (pos < 0) or (Length(fArray) < pos) then
  begin
    Writeln('Insert failed at pos' + IntToStr(pos));
    Exit;
  end;
  SetLength(fArray, length(fArray) + 1);
  for i := Length(fArray) - 2 downto pos do
    fArray[i + 1] := fArray[i];
  fArray[pos] := value;
end;

procedure GList.Remove(pos : Integer);
var
  i : Integer;
begin
  if (pos < 0) or (Length(fArray) < pos) then
  begin
    Writeln('Remove failed at pos' + IntToStr(pos));
    Exit;
  end;

  for i := pos to Length(fArray) - 2 do
    fArray[i] := fArray[i + 1];
  SetLength(fArray, length(fArray) - 1);
end;

procedure GList.RemoveElement(element : Integer);
var
  i : Integer;
begin
  for i := Length(fArray) - 1 downto 0 do
    if fArray[i] = element then
      Remove(i);
end;

function GList.ToArray : IntArray;
begin
  Result := fArray;
end;

function GList.Minimum():Integer;
var
  i : Integer;
  min : Integer;
begin
  min := fArray[0];
  for i := 0 to Length(fArray) -1 do
    if fArray[i] < min then
      min := fArray[i];
  Result := min;
end;

function GList.Maximum():Integer;
var
  i : Integer;
  max : Integer;
begin
  max := fArray[0];
  for i := 0 to Length(fArray) -1 do
    if fArray[i] > max then
      max := fArray[i];
  Result := max;
end;

procedure GList.Show();
var
  i : Integer;
begin
  for i := 0 to Length(fArray) -1 do
    Write(IntToStr(fArray[i]) + ' ');
end;

function GList.Sum() : Integer;
var
  val : Integer;
  i : Integer;
begin
  val := 0;
  for i := 0 to Length(fArray) -1 do
    val := val + fArray[i];
  Result := val;
end;

var
  l : GList;
begin
  l := GList.Create;
  l.Add(1);
  l.Add(2);
  l.Add(3);
  l.Insert(4, 1);
  l.Show();
  l.Remove(1);
  l.RemoveElement(1);
  Writeln('');
  l.Show;
  Writeln('');
  Writeln(l.Sum);
  Readln;
end.
not sure if all correct, but should be good start point
akaDelphi вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод программы из С в С++ Unakit Помощь студентам 2 22.05.2014 08:05
Перевод программы из С++ в С# Tol-333 C# (си шарп) 0 15.12.2011 11:00
Перевод программы (С++) Кристинка89 Помощь студентам 1 22.11.2011 15:45
Перевод программы с Паскаль на С++ Sentteriys Общие вопросы C/C++ 1 16.05.2011 22:40
Перевод программы с языка Паскаль на язык С# Firagon Помощь студентам 1 08.05.2011 13:00