
Модератор: Модераторы
AlphaBlend писал(а):А это как-то влияет на код илипростосчитается "дурным тоном программирования" ? Оставление "Self" ?
Bombucho писал(а):вы советуете код полностью переписать
Bombucho писал(а):подобные темы
Bombucho писал(а):уже типает от этой задачи.Если уж никак помочь не в состоянии
resident писал(а):О боже, да у вас тут такая комедия во всем коде.
- Код: Выделить всё
procedure TKvadrat.Get_Storona(st:integer);
begin
if (st>0) and (st<>0) then FStorona:=st
else
FStorona:=2;
FStorona:=st;
end;
Как вы своими словами опишите, что здесь происходит?
AlphaBlend писал(а):Bombucho писал(а):уже типает от этой задачи.Если уж никак помочь не в состоянии
на странице 3 этого поста решение разложено по полочкам и даже приведен пример использования . Скорее всего кто-то понять как это работает не в состоянии ?![]()
P.S. Если очень мучиться - то диплом получится ! (с)
TRectangle = class
end;
AlphaBlend писал(а):что сначала FStona пристаивается 2
AlphaBlend писал(а):запуталась немного )
AlphaBlend писал(а):в вашем выражении Fstone всегда будет равна st если st больше нуля или не равна нулю. Опять же странность в условии . Не проще ли написать просто if st > 0 ? Логично же , что если она больше нуля - она ему и не равна !
AlphaBlend писал(а):Странно , что сначала FStona пристаивается 2 , а потом тут же присваивается st . Вопрос - зачем присваивать 2 ? Меня очень мучит вопрос , если позволите ... Вы на кого учитесь ?
Bombucho писал(а):Очевидно учусь на программиста
Bombucho писал(а):Проверка переменной st если переменная будет соответствовать условию будет больше 0 и не ровняться 0 (но тут я действительно замудрил если больше 0, то очевидно 0 равняться никак не может) тогда переменная st будет равна вводимому числу с поля, иначе переменная равна 2 (т.к. по условию изначально сторона квадрата равна 2)
Bombucho писал(а):четырехульная пирамида
resident писал(а):Вынос мозга. Вы так если только в военкомат уедете. У вас всего два слова в запасе - "переменная" и "равна".
AlphaBlend писал(а):мой маленький код полностью соответствует условию задачи ) Но я с радостью могу обвешать его ненужными фенкциями ,проверками , обертками ... Для нахождения поверхности только через площадь используйте математические преобразования . К программированию это отношения не имеет . программы выполнит все , чтоей напишут . можно хоть через радиус окружности , описанной вокруг основания и угол найтиповерхность
Добавлено спустя 3 минуты 4 секунды:
Вам в условии сказано , что есть класс "квадрат" . То есть надо реализовать клас "квадрат" . И добавляя к нему какие-то свойства и методы ( произвольно , конечно ) , сделать пирамидку ) Создайте класс "квадрат" с самым минимумом свойств и методов и потом просто "обвешайте" его всем необходимым.
Изначально класс вообще может принять вид как
- Код: Выделить всё
TRectangle = class
end;
И больше ничего в нем может не быть
Добавлено спустя 6 минут 55 секунд:
если нужно прямо во всех канонах Delphi , то смысл кода от этого не изменится , но обрастет всякими "красивостями" как я их называю . Число , получаемое при расчетах поверхности при этом останется тем же )
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,unit2,unit3;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
k,a:integer;
begin
k:=strtoint(Edit1.Text);
a:=strtoint(Edit2.Text);
Pyramid:=TPyramid.Create(k);
Pyramid.SetApof(a);
showmessage(FloatToStr(Pyramid.GetSurface));
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
close
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Edit1.clear;
Edit2.clear;
end;
end.
unit Unit2;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils;
type
TRectangle = class
Side:Integer;
function Perimetr:Integer;
function Area:Integer;
constructor Create(ASide:Integer);overload;
end;
implementation
function TRectangle.Perimetr:Integer;
begin
result:=Side * 4;
end;
function TRectangle.Area:Integer;
begin
result:=Side*Side;
end;
constructor TRectangle.Create(ASide:Integer);
begin
inherited Create;
Side:=ASide;
end;
end.
unit Unit3;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils,unit2;
type
TPyramid = class (TRectangle)
private
Apof:Integer;
Surface:Integer;
public
procedure SetApof(NewApof:Integer);
function GetSurface:Real;
end;
implementation
function TPyramid.GetSurface:Real;
var
A:Real;
p:real;
S:Real;
begin
p:=(Self.Side + Self.Apof + Self.Apof) / 2;
S:=SQRT(p * ( p - Apof) * (p - Apof) * (p - Side));
S:=(S * 4) + Self.Area;
result:=S;
end;
end.
Сейчас этот форум просматривают: Yandex [Bot] и гости: 228