Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> нахождение сумм, площадей и периметров 
:(
    Опции темы
pyxy
  Дата 7.3.2012, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код
unit labka;

interface

type
  TGeomFigure=class (TObject)
        function Plosha: integer; virtual; abstract;
        function Perimetr: integer; virtual; abstract;
        function InputData: boolean; virtual; abstract;
  end;

TSquare=class(TGeomFigure)
        side: integer;
        function Plosha: integer; override;
        function Perimetr: integer; override;
        function InputData: boolean; override;
end;

TTrap=class(TGeomFigure)
        h,side1,side2,side3: integer;
        function Plosha: integer; override;
        function Perimetr: integer; override;
        function InputData: boolean; override;
end;

TRectangle=class(TGeomFigure)
        side1,side2: integer;
        function Plosha: integer; override;
        function Perimetr: integer; override;
        function InputData: boolean; override;
end;

implementation

function TSquare.Plosha: integer;
begin
        Plosha:=side*side;
end;

function TSquare.Perimetr: integer;
begin
        Perimetr:=4*side;
end;

function TSquare.InputData: boolean;
begin
        writeln ('Vvedenna parametriv kvadrata');
        write ('Vvedit ctorony kvadrata: ');
        readln(side);
        if  side<=0 then InputData:=false
                else InputData:=true;
        end;

function TRectangle.Plosha: integer;
begin
         Plosha:=side1*side2;
end;

function TRectangle.Perimetr: integer;
begin
        Perimetr:=(side1+side2)*2;
end;

function TRectangle.InputData: boolean;
begin
        writeln ('Vvedenna parametriv pramokytnuka');
        write ('Vvedit ctorony pramokytnka: ');
        readln(side1,side2);
        if (side1<=0) or (side2<=0) then InputData:=false
                else InputData:=true;
end;

function TTrap.Plosha: integer;
begin
        Plosha:=(side1+side2)*h/2;
end;

function TTrap.Perimetr: integer;
begin
        Perimetr:=side1+side2+2*side3;
end;

function TTrap.InputData: boolean;
begin
        writeln ('Vvedenna parametriv trapeciy');
        write ('Vvedit ctorony trapecii: ');
        readln(side1,side2,side3);
        if (side1<=0) or (side2<=0) or (side3<=0) then InputData:=false
                else InputData:=true;
        end;
end.

а вот и програма
Код

program laboratorna;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  labka in 'labka.pas';

const n=3;
var
        aFigure: array[1..n] of TGeomFigure;
        sum_plosh,sum_perim: integer;
        i: integer;
        tup: char;

begin
  write ('Zadayte tup figury:   ');
  readln(tup);
  writeln;
  for i:=1 to n do
  case tup of
  'k': aFigure[i] := TSquare.Create;
  't': aFigure[i] := TTrap.Create;
  'p': aFigure[i] := TRectangle.Create
end;

for i:=1 to n do
if not aFigure[i].InputData then
        begin
                write ('Pomulka vvedenna danux ');
                exit;
        end;
sum_plosh:=0; sum_perim:=0;
for i:=1 to n do
        begin
                sum_plosh:=sum_plosh+aFigure[i].Plosha;
                sum_perim:=sum_perim+aFigure[i].Perimetr;
        end;
writeln;
writeln('Cyma plosh =',sum_plosh);
writeln('Cyma perimetriv= ',sum_perim);
readln
end. 

smile ПОМОГИТЕ ПОЖАЛУЙСТА.Никак не могу написать площадь трапеции выбивает ошибку ,и еще я не могу  сделать для круга и треугольника...


Это сообщение отредактировал(а) bems - 7.3.2012, 04:59
PM MAIL   Вверх
bems
Дата 7.3.2012, 04:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



где именно выбивает и какую ошибку?

Добавлено через 7 минут и 43 секунды
ошибка в том что у тебя
Plosha возвращает целое а ты пытаешься запихнуть туда вещественное.

или сделай так
Код

function TTrap.Plosha: real;
begin
        Plosha:=(side1+side2)*h/2;
end;


или так

Код

function TTrap.Plosha: integer;
begin
        Plosha:=Round((side1+side2)*h/2);
end;


первый вариант правильней, но он требует изменения объявления метода Plosha во всех классах


--------------------
Обижено школьников: 8
PM MAIL   Вверх
pyxy
Дата 7.3.2012, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(bems @ 7.3.2012,  04:56)
где именно выбивает и какую ошибку?

Добавлено @ 05:04
ошибка в том что у тебя
Plosha возвращает целое а ты пытаешься запихнуть туда вещественное.

или сделай так
Код

function TTrap.Plosha: real;
begin
        Plosha:=(side1+side2)*h/2;
end;


или так

Код

function TTrap.Plosha: integer;
begin
        Plosha:=Round((side1+side2)*h/2);
end;


первый вариант правильней, но он требует изменения объявления метода Plosha во всех классах

Благодарю, но выводит 0...
не выбивает ошибку просто сумма не считается, а выводится 0
PM MAIL   Вверх
bems
Дата 7.3.2012, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



как именно исправил, какие исходные данный вводил? не заставляй из тебя вытягивать


--------------------
Обижено школьников: 8
PM MAIL   Вверх
pyxy
Дата 7.3.2012, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(bems @ 7.3.2012,  08:54)
как именно исправил, какие исходные данный вводил? не заставляй из тебя вытягивать

любые данные, площадь не считается ....
PM MAIL   Вверх
northener
Дата 7.3.2012, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

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



Цитата(pyxy @  7.3.2012,  08:28 Найти цитируемый пост)
Благодарю, но выводит 0

А что кроме 0 может получиться, если h = 0?
Надо вспомнить школу и рассчитать высоту трапеции, зная ее стороны.

Это сообщение отредактировал(а) northener - 7.3.2012, 18:08


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
bems
Дата 7.3.2012, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



Цитата(northener @  7.3.2012,  18:05 Найти цитируемый пост)
А что кроме 0 может получиться, если h = 0?

ты прочитал это полностью! smile 


pyxy, ну добавь ввод высоты в InputData


--------------------
Обижено школьников: 8
PM MAIL   Вверх
northener
Дата 8.3.2012, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

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



Цитата(bems @  7.3.2012,  23:41 Найти цитируемый пост)
ты прочитал это полностью! smile 

Это ты к кому адресуешь?  smile 
А понял. Нечего было делать - вот и прочитал. Но не полностью, а лишь реализацию методов для трапеции.

Цитата(bems @  7.3.2012,  23:41 Найти цитируемый пост)
pyxy, ну добавь ввод высоты в InputData

Имхо, перебор. Особенно если это учебное задание. Размеры всех сторон трапеции дают всю необходимую информацию о данной фигуре.


Это сообщение отредактировал(а) northener - 8.3.2012, 00:58


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
bems
Дата 8.3.2012, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



вообще да, но не осилит же


--------------------
Обижено школьников: 8
PM MAIL   Вверх
northener
Дата 8.3.2012, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

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



Цитата(bems @  8.3.2012,  00:55 Найти цитируемый пост)
вообще да, но не осилит же

А это уже его проблемы. И зависит от преподавателя. Хороший преподаватель не примет "лишние сущности при вводе данных для вычислений".

Это сообщение отредактировал(а) northener - 8.3.2012, 01:03


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
pyxy
  Дата 13.3.2012, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



тут вы правы, сама не справлюсь, хоть на примере покажите как делать....
PM MAIL   Вверх
northener
Дата 14.3.2012, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

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



Цитата(bems @  7.3.2012,  23:41 Найти цитируемый пост)
pyxy, ну добавь ввод высоты в InputData




--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


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

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


 




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


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

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