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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2011, 13:31   #1
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию Класс вектор

как правильно вызвать перегруженный конструктор?
что значит ошибка 201?
Как динамически выделить память под двумерный массив?

Код:
program game;
uses crt, graph;

type
vr = Array of integer;
mr = Array [integer,integer] of integer;

vctr = object
private
m: vr;
n: integer;
public
constructor new_vector;
constructor new_vector(sz:integer);
destructor destroy_vector;
procedure null();
procedure print_vector();
end;
pvctr = ^vctr;



(* vector *)
constructor vctr.new_vector();
begin
end;

constructor vctr.new_vector(sz:integer);
begin
n := sz;
SetLength(m,n);
null();
end;

destructor vctr.destroy_vector();
begin
end;

procedure vctr.null();
var
dt:integer;
begin
for dt:=0 to n do
begin
m[dt] := 0;
end;
end;

procedure vctr.print_vector();
var dt:integer;
begin
for dt:=0 to n do
begin
write(m[dt]);
end;
writeln;
end;

(*identifiers*)
var
ft: pvctr;

(* main *)
begin
ft:= new (pvctr, new_vector(5));
ft^.print_vector();
end.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"

Последний раз редактировалось challengerr; 19.08.2011 в 13:35.
challengerr вне форума Ответить с цитированием
Старый 23.08.2011, 14:33   #2
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

с предыдущим вопросами сам разобрался

хоть убей не могу понять откуда вылазит ошибка
unexpected end of file

Код:
program game;
uses crt, graph;

type
lid = record
 i1: string;
 i2: integer;
end;
 pid=^lid;
 alid = Array of lid;

 vr = Array of integer;
 mr = Array of array of integer;
 tr = Array [integer,integer] of integer;


vctr = object
 private
 m: vr;
 n: integer;
 public
 constructor new_vector;
 constructor new_vector(sz:integer);
 destructor destroy_vector;
 procedure null_vector(ji:integer);
 procedure print_vector();
 procedure random_vector(bs:integer);
end;
 pvctr = ^vctr;

mtrx = object
 private
 m:mr;
 n1:integer;
 n2:integer;
 public
 constructor new_matrix;
 constructor new_matrix(sz1:integer;sz2:integer);
 destructor destroy_matrix;
 procedure print_matrix();
 procedure null_matrix(ji:integer);
 procedure random_matrix(bs:integer);
end;
 pmtrx= ^mtrx;

b = object
 private
 ju: integer;
 public
 constructor re;
 destructor de;
 procedure p;
end;

(* vector *)
constructor vctr.new_vector();
begin
end;

constructor vctr.new_vector(sz:integer);
begin
 n := sz;
 SetLength(m,n);
 random_vector(10);
end;

destructor vctr.destroy_vector();
begin
end;

procedure vctr.null_vector(ji:integer);
var
 dt:integer;
begin
 for dt:=0 to n-1 do
 begin
  m[dt] := ji;
 end;
end;

procedure vctr.random_vector(bs:integer);
var
 dt:integer;
begin
 randomize;
 for dt:=0 to n-1 do
 begin
  m[dt]:=random(bs);
 end;
end;

procedure vctr.print_vector();
var dt:integer;
begin
 for dt:=0 to n-1 do
 begin
  write(m[dt]);
 end;
 writeln;
end;

(* matrix *)
constructor mtrx.new_matrix();
begin
end;

constructor mtrx.new_matrix(sz1:integer;sz2:integer);
begin
 SetLength(m,sz1,sz2);
 n1:=sz1;n2:=sz2;
 random_matrix(10);
end;

destructor mtrx.destroy_matrix();
begin
end;

procedure mtrx.print_matrix();
var dx,dy:integer;
begin
 for dx:=0 to n1-1 do
 begin
  for dy:=0 to n2-1 do
  begin
  write (m[dx,dy]);
  end;
  writeln();
 end;
end;

procedure mtrx.null_matrix(ji:integer);
var dx,dy:integer;
begin
 for dx:=0 to n1-1 do
 begin
  for dy:=0 to n2-1 do
  begin
  m[dx,dy]:=ji;
  end;
 end;
end;

procedure mtrx.random_matrix(bs:integer);
var dx,dy:integer;
begin
 randomize();
 for dx:=0 to n1-1 do
 begin
  for dy:=0 to n2-1 do
  begin
  m[dx,dy]:=random(bs);
  end;
 end;
end;



(* b *)

constructor b.re;
begin
 ju:=5;
end;

destructor b.de;
begin
 ju:=9;
end;

procedure b.p;
begin
 writeln(ju);
end;

(*identifiers*)
Const
 fieldsize =  20;

var
 i,j,d,g:integer;
 rt: b;
 ft: pvctr;
 gt: pmtrx;
 k:vr;
 k2:mr;

(* init graphics *)
procedure in_graph();
begin
 d:=detect;
 initgraph(d,g,'');
end;



(* dynamic memory *)
procedure dyn_memory(a:vr; sz:integer);
begin
 SetLength(a,sz);
 writeln('high(a): ', high(a));
end;

procedure dyn_memory(a:mr; sz1:integer; sz2:integer);
begin
 SetLength(a,sz1,sz2);
end;

procedure read_identifier();
var
 ad: string;
 df: char;
 ci: shortint;
 ins: alid;
 inid : boolean;
begin
 inid:=false;
 ad:='read_identifier: a=1; b=2 c:=3 d=4 ';
 (*writeln('high(ad): ', high(ad)); (*255*)
 (**«Ј®аЁв¬: 1 зЁв*Ґ¬ Ї®бЁ¬ў®«м*® бва®Єг 2 ўл¤Ґ«пҐ¬ ®ЇҐа*в®ал ЇаЁбў*Ёў**Ёп 3 ᮧ¤*Ґ¬ ЇҐаҐ¬Ґ**лҐ *)
 for ci:=1 to 35 do
 begin
  df := ad[ci];
  case df of
   'A'..'Z', 'a'..'z','_':
    inid := true; (* ᮧ¤*вм ¬*ббЁў Є®в®ал© §*Ї®¬*Ёв Ї®б«Ґ¤®ў*⥫м*®бвм 1. array 2. string*)
    write(df);
   ' ':
    inid := false;
  end;
 end;
 writeln();
end;


(* main *)
begin
 ft := new (pvctr, new_vector(10));
 ft^.print_vector();
 gt := new (pmtrx, new_matrix(10,10));
 gt^.print_matrix();
 in_graph();
 dyn_memory(k,5);
 dyn_memory(k2,5,5);
 read_identifier();
end.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"

Последний раз редактировалось challengerr; 23.08.2011 в 14:35.
challengerr вне форума Ответить с цитированием
Старый 23.08.2011, 14:37   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
program game;
uses crt, graph;

var i:integer;
begin
end.
Ниче не замечаешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.08.2011, 15:07   #4
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

- я всю программу комментировал чтобы выяснить где может быть ошибка и доюавил это в начале
Код:
var i:integer;
begin
end.
я это уже удалил но проблема не в этом
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 23.08.2011, 15:14   #5
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от challengerr Посмотреть сообщение
как правильно вызвать перегруженный конструктор?

Как динамически выделить память под двумерный массив?
Цитата:
Многомерные динамические массивы описываются именно как массивы массивов. Например, двумерный:

type T3DinArray = array of array of Integer;
var A : T3DinArray;

В программе сначала задаётся размер по первому измерению (количество столбцов):

SetLength(A, 3);

Затем задаётся размер второго измерения для каждого из трёх столбцов, например:

SetLength(A[0], 3);
SetLength(A[1], 2);
SetLength(A[2], 1);

Чтобы освободить память, выделенную динамическому массиву, нужно массиву как целому присвоить значение nil:
http://www.delphi-manual.ru/lesson5.php#arr
Вадим Мошев вне форума Ответить с цитированием
Старый 23.08.2011, 15:22   #6
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

я стараюсь соблюдать авторское право и права авторов на ПО.
Дельфи я не планирую использовать (так как не знаю есть ли бесплатная лицензия)
можно без ссылок на защищенное авторским правом ?

_____

Вадим Мошев
Спасибо.
Можете ли вы указать более профессиональный способ?
Это не очень профессионально, а если там тысяча?
Код:
SetLength(A[0], 3);
SetLength(A[1], 2);
SetLength(A[2], 1);
В language reference указан следующий способ:
Код:
type
ta = array of array of integer;
var
a:ta;
begin
SetLength(a,10,10);
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 05.09.2011, 13:02   #7
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от challengerr Посмотреть сообщение
можно без ссылок на защищенное авторским правом ?
Ссылка была на урок, находящийся в свободном доступе, тут нет никаких нарушений. Не надо хорошее дело доводить до абсурда. Модель динамических массивов в FPC в целом такая же, как и в Delphi, так что можно использовать этот материал.

Цитата:
Можете ли вы указать более профессиональный способ?
Это не очень профессионально, а если там тысяча?
При чем тут тысяча? Твой уровень профессионализма не позволяет тебе использовать циклы что ли? или на это нужно отдельное объяснение?

Конечно, метод, который ты привел, компактнее метода, указанного Вадимом (даже если использовать цикл). Но зато в том методе явно видна возможность делать непрямоугольные массивы. То есть такие, в которых строки могут быть разной длины (в твоем методе это невозможно).
А профессионализм - применяй сам.

По поводу ошибки компиляции.. Приведит ТОЧНЫЙ код, в котором ошибка. Очень неэтично приводить код с измнениями, а потом говорить, что "проблема не в том". Приводи ТОЧНЫЙ код. Символ в символ. Пожалуйста.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Класс вектор в Delphi Beren42 Помощь студентам 7 02.06.2011 12:50
класс N-Мерный вектор neon0858 Помощь студентам 0 01.06.2011 00:28
Класс-Контейнер Вектор Zorg2 Помощь студентам 1 10.04.2011 22:32
C++ создать класс Вектор Drakowa Помощь студентам 2 29.03.2011 17:06
С++класс-вектор cati Помощь студентам 4 21.04.2010 21:58