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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2011, 17:46   #1
What's_That?
Пользователь
 
Регистрация: 19.07.2011
Сообщений: 12
Сообщение TP7.0,Graph

Укажите на грубые,глупые,грубые+глупые ошибки в следующем коде:

Код:
uses crt,graph;
type
point=object
constructor Init(x,y:integer);
procedure draw(x1,y1:integer;color:word);
end;
constructor point.Init;
begin
x:=random(25);
y:=random(25);
end;
procedure point.draw;
begin
putpixel(x1,y1,color);
end;
var
a:^point;
corX,corY,N,d,r:integer;
aColor:word;
begin
clrscr;
d:=detect;
InitGraph(d,r,'');
N:=random(4);
case N of
1:aColor:=yellow;
2:aColor:=green;
3:aColor:=blue;
4:aColor:=white;
end;
corX:=random(25);
corY:=random(25);
new(a,Init(corX,corY));
a^.draw(corX,corY,aColor);
end.

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 21.07.2011 в 18:05.
What's_That? вне форума Ответить с цитированием
Старый 21.07.2011, 18:19   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) тема у Вас всё таки не Graph - а описание/создание объекта

2) по поводу a:^point;
с указателями у Вас, в принципе было правильно. Только я не вижу необходимости в их использовании в данном случае.
Если нужно - вернёте обратно.
Только если выделяете память через new() не забывайте освобождать её (память) через Dispose()

3) всё остальное (имхо) куча ошибок (как мелких - типа не использование randomize и при random(4) проверка на то, что N = 4, так и принципиальных. Процедура Init по сути была бессмысленной, ибо результаты x:= y:= random(25) никуда не сохранялись!

я быстренько переделал так, как я посчитал правильным (ООП не моя сильная сторона, поэтому на 100% правильность не претендую...) Но, имхо, код стал меньше, понятнее, проще и, главное, более приближенным к правильному...

Код:
uses crt, graph;
type
  point = object
    x, y: integer;
    aColor: word;
    constructor Init;
    procedure draw;
  end;

constructor point.Init;
var N : integer;
begin
  x := random(25);
  y := random(25);
  N := random(4);
  case N of
    0: aColor := yellow;
    1: aColor := green;
    2: aColor := blue;
    3: aColor := white;
  end;

end;

procedure point.draw;
begin
  putpixel(x, y, aColor);
end;

var
  a: point;
  d,r : integer;
begin
  clrscr;
  Randomize;
  d := detect;
  InitGraph(d, r, '');
  a.Init;
  a.draw;
  readln
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.07.2011, 18:53   #3
What's_That?
Пользователь
 
Регистрация: 19.07.2011
Сообщений: 12
По умолчанию

Спасибо вам большое))
What's_That? вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа в TP7 D1zz1 Помощь студентам 5 05.06.2011 23:47
Строки,TP7 Elecktrosha Помощь студентам 0 20.12.2009 15:09
Задачка на TP7 Disel Паскаль, Turbo Pascal, PascalABC.NET 2 19.01.2009 14:30
6 задач по TP7 Disel Паскаль, Turbo Pascal, PascalABC.NET 21 14.01.2009 19:50
6 задач по TP7 Disel Паскаль, Turbo Pascal, PascalABC.NET 17 14.01.2009 16:33