Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Delphi] Переопределенный метод Invite 
:(
    Опции темы
dawystrik
Дата 24.3.2009, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 23.3.2009

Репутация: нет
Всего: нет



Цитата

(arctg(c - d/2))/(2*a - b/c)


А c и d откуда взять?
ввести с клавиатуры
PM MAIL   Вверх
Rrader
  Дата 24.3.2009, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 14
Всего: 191



Код

program Project1;

{$APPTYPE CONSOLE}

uses Windows, Dialogs, Math;

type
  TBaseClass = class(TObject)
  protected
    procedure Invite; virtual; abstract;
  end;

  TIntegerClass = class(TBaseClass)
  private
    A, B: Integer;
  public
    procedure Invite; override;
    function Evaluate(C, D: Integer): Single; virtual;
  end;

  TSingleClass = class(TBaseClass)
  private
    A, B: Single;
  public
    procedure Invite; override;
    function Evaluate(C, D: Integer): Single; virtual;
  end;

  TIntSingleClass = class(TBaseClass)
  private
    A: Integer;
    B: Single;
  public
    procedure Invite; override;
    function Evaluate(C, D: Integer): Single; virtual;
  end;

  TSingleIntClass = class(TBaseClass)
  private
    A: Single;
    B: Integer;
  public
    procedure Invite; override;
    function Evaluate(C, D: Integer): Single; virtual;
  end;

{ TIntegerClass }


function TIntegerClass.Evaluate(C, D: Integer): Single;
begin
  Result := ArcTan(C - D / 2) / (A shl 1 - B / C);
  WriteLn('Result is : ', Result);
end;

procedure TIntegerClass.Invite;
begin
  ShowMessage('Вызван из: ' + ClassName);
end;

{ TSingleClass }

function TSingleClass.Evaluate(C, D: Integer): Single;
begin
  Result := ArcTan(C - D / 2) / (A * 2 - B / C);
  WriteLn('Result is : ', Result);
end;

procedure TSingleClass.Invite;
begin
  ShowMessage('Вызван из: ' + ClassName);
end;

{ TIntSingleClass }

function TIntSingleClass.Evaluate(C, D: Integer): Single;
begin
  Result := ArcTan(C - D / 2) / (A shl 1 - B / C);
  WriteLn('Result is : ', Result);
end;

procedure TIntSingleClass.Invite;
begin
  ShowMessage('Вызван из: ' + ClassName);
end;

{ TSingleIntClass }

procedure TSingleIntClass.Invite;
begin
  ShowMessage('Вызван из: ' + ClassName);
end;

function TSingleIntClass.Evaluate(C, D: Integer): Single;
begin
  Result := ArcTan(C - D / 2) / (A * 2 - B / C);
  WriteLn('Result is : ', Result);
end;

var
  C, D: Integer;

begin
  { TODO -oUser -cConsole Main : Insert code here }
  WriteLn('Please enter C and D...' + sLineBreak);
  ReadLn(C);
  WriteLn;
  ReadLn(D);
  with TIntegerClass.Create do
  try
    A := 20;
    B := 10;
    Invite;
    Evaluate(C, D);
  finally
    Free;
  end;
  with TSingleClass.Create do
  try
    A := 10.15;
    B := 5.25;
    Invite;
    Evaluate(C, D);
  finally
    Free;
  end;
  with TSingleIntClass.Create do
  try
    A := 10.15;
    B := 5;
    Invite;
    Evaluate(C, D);
  finally
    Free;
  end;
  with TIntSingleClass.Create do
  try
    A := 10;
    B := 5.25;
    Invite;
    Evaluate(C, D);
  finally
    Free;
  end;
  ReadLn;
end.


Задание не самое лучшее, пришлось много однотипного кода продублировать.

Это сообщение отредактировал(а) Rrader - 24.3.2009, 12:22


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
dawystrik
Дата 24.3.2009, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 23.3.2009

Репутация: нет
Всего: нет



проверьте,плиз,на правильность согласно моему условию,а то ошбику выдает,а как исправить - фиг его знает
Код
program Project1;
{$APPTYPE CONSOLE}
uses SysUtils, Classes;
type
    TParent=class(TObject)
        a:array of string;
     protected
        procedure ShowList; virtual;
     public
        procedure Invite;virtual; abstract;
        procedure Show;
    end;
    TChild=class(TParent)
     public
        procedure Invite; override;
        procedure ShowList; override;
    end;


procedure TParent.ShowList;
var i:byte; s:string;
begin
    s:='';
    for i:=0 to High(a) do
      s:=s+a[i]+#13#10;
    write(s);
end;

procedure TParent.Show;
begin
    write('a list:');
    ShowList;
end;

procedure TChild.Invite;
begin
writeln((self as TObject).ClassName);
end;
 
procedure TChild.ShowList;
var i:byte; s:string;
begin
    s:='';
    for i:=0 to High(a) do
      s:=s+a[i]+' : ';
    write(s);
end;
function Ar1(var a,b,c,d:integer):real;
begin
if c=0 then
begin
   Writeln ('Na nol delit nelzja!!!!');
   Exit;
end;
Ar1:=(arctan(c - (d/2)))/(2*a - (b/c));
end;
function Ar2(var e,f:single;c,d:integer):double;
begin
if c=0 then
begin
   Writeln ('Na nol delit nelzja!!!!');
   Exit;
end;
Ar2:=(arctan(c - (d/2)))/(2*e - (f/c));
end;
function Ar3(var f:single; e,c,d:integer):double;
begin
if c=0 then
begin
   Writeln ('Na nol delit nelzja!!!!');
   Exit;
end;
Ar3:=(arctan(c - (d/2)))/(2*e - (f/c));
end;
function Ar4(var e:single; f,c,d:integer):double;
begin
if c=0 then
begin
   Writeln ('Na nol delit nelzja!!!!');
   Exit;
end;
Ar4:=(arctan(c - (d/2)))/(2*e - (f/c));
end;
var com,g:byte;
    a,b,c,d:integer;
    e,f:single;
begin
  writeln('Vuberite odnu iz command:');
  writeln('1. Pokazat imja klassa TParent');
  writeln('2. Pokazat imja klassa TChild');
  writeln('3. Vuchislit vurajenie (arctg(c - d/2))/(2*a - b/c)');
  writeln('4. Vuxod');
  read(com);
  case com of
    1: begin write('Type of class: '); TParent.Create.Invite; end;    {ERROR!!!!!}
    2: begin write('Type of Child-class: ');TChild.Create.Invite; end; {CORRECT}
    3: begin writeln('Vvedite a: ');
             Writeln('Vvedite b:');
             Writeln('Vvedite c:');
             Writeln('Vvedite d:');
             Writeln('Vuberite tip a i b:');
             Writeln('1. a,b:integer;');
             Writeln('2. a,b:single;');
             Writeln('3. a:integer, b:single;');
             Writeln('4. a:single, b:integer;');
             readln(a);
             readln(b);
             readln(c);
             readln(d);
             readln(e);
             readln(f);
             readln(g);
             case g of
                  1: begin Writeln('Rezultat raven: ',Ar1(a,b,c,d));
                           Writeln('Najmite <Enter> dlja vuxoda')
                     end;
                  2: begin Writeln('Rezultat raven: ',Ar2(e,f,c,d));
                           Writeln('Najmite <Enter> dlja vuxoda')
                     end;
                  3: begin Writeln('Rezultat raven: ',Ar3(e,f,c,d));
                           Writeln('Najmite <Enter> dlja vuxoda')
                     end;
                  4: begin Writeln('Rezultat raven: ',Ar4(e,f,c,d));
                           Writeln('Najmite <Enter> dlja vuxoda')
                     end;
                  end;
    4: begin
         Exit
       end;
  end;
  readln;
  readln;
end.


PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0528 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.