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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2010, 20:06   #1
Asira
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 84
По умолчанию Объекты

Помогите найти ошибки!!!!!!!
Почему на выходе всегда 0?
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
   Tpar=class
    massa:real;
    UdelTeplPar:real;
    FKoltepl:real;
    function KolTepl:real;
    end;
  Tvoda=class(Tpar)
    UdelTeploemkosty:real;
    NachTemp:real;
    function KolTepl:real;
    end;
 Tled=class(Tvoda)
    UdelTeplPlav:real;
    function KolTepl:real;
    end;

{ Tpar }

Function Tpar.KolTepl:real;
begin
FkolTepl:=0
end;

{ Tvoda }
function Tvoda.KolTepl:real;
begin
UdelTeplPar:=2250000;
//UdelTeploemkosty:=4200;
inherited  KolTepl;
if nachtemp>=0 then
FKolTepl:=FkolTepl+massa*UdelTeplPar-4.2*(100-nachTemp)
           else
           FKolTepl:=FkolTepl+massa*UdelTeplPar;
              end;

{ Tled }
function Tled.KolTepl:real;
begin
UdelTeplPlav:=330000;
inherited KolTepl ;
FKolTepl:=FKolTepl+(4.2*massa*NachTemp*-1)+UdelTeplPlav*massa;
end;


var
massa,t,UdelTeplPar,FkolTepl,UdelTeplPlav,UdelTeploemkosty:real;
    vesh:Tpar;
begin
Write('Vvedite massu veshestva -> ');
readln(massa);
Write('Vvedite temperaturu veshestva -> ');
readln(t);

if t<=0 then vesh:=Tled.Create
       else if t=100 then vesh:=Tpar.Create
   else vesh:=Tvoda.Create;
 vesh.massa:=massa;
 vesh.KolTepl;
 writeln('Kolichestvo energii dlya isparenia danogo veshestva = ',vesh.FKolTepl:5:3,' Dg');
  vesh.Free;
 readln;


end.
Asira вне форума Ответить с цитированием
Старый 14.06.2010, 20:26   #2
baster128
Форумчанин
 
Аватар для baster128
 
Регистрация: 24.04.2010
Сообщений: 205
По умолчанию

Да я врубил твою прогу. НИКАКИХ ОШИБО НЕ ВИДАТЬ. Что она делоть должна?
baster128 вне форума Ответить с цитированием
Старый 14.06.2010, 20:44   #3
Asira
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 84
По умолчанию

Она пашет но ответ всё время 0000 где то есть ошибка...
Используя наследование, описать три указанных класса (в скобках перечислены как поля, так и методы) и выполнить указанные задания. Количество полей в каждом классе должно быть минимальным.
Лед (масса, удельная теплота плавления, удельная теплоемкость, начальная температура, количество теплоты);

Вода (масса, удельная теплоемкость, начальная температура, количество теплоты);

Пар (масса, удельная теплота парообразования, количество теплоты);

Даны масса и начальная температура вещества не выше 100 С. Определить какое количество теплоты требуется для полного испарения этого вещества.
Asira вне форума Ответить с цитированием
Старый 15.06.2010, 00:21   #4
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Ну может потому что:
Код:
var  vesh:Tpar;
, а
Код:
Function Tpar.KolTepl:real;
begin
FkolTepl:=0
end;
?

И ещё мне не понятно - для чего там "vesh.KolTepl;" и почему всюду "FKolTepl:=FKolTepl+..."?

А не просто "kolTepl:=..." нужно писать?
I am the First of Cyber Evolution...
I am the First to Program your Future...

Последний раз редактировалось DomiNick; 15.06.2010 в 00:23.
DomiNick вне форума Ответить с цитированием
Старый 15.06.2010, 01:30   #5
Asira
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 84
По умолчанию

Да спасибо там точно нужно писать FKolTepl:=... без всяких прибавлений
КАк можно обойти данный момент ?
Код:
Function Tpar.KolTepl:real;
begin
FkolTepl:=0
end;
ведь если температура вещества действительно выше 100 градусов то это вещество пар и для его превращения в пар энергия не нужна...???????
вообще физики не знаю. и не понимаю.. зачем тут пар нужен(( точнее как его привязать к месту....

Последний раз редактировалось Asira; 15.06.2010 в 01:34.
Asira вне форума Ответить с цитированием
Старый 15.06.2010, 01:48   #6
baster128
Форумчанин
 
Аватар для baster128
 
Регистрация: 24.04.2010
Сообщений: 205
По умолчанию

Незабудь, на все Create-ы свои сделать по окончании проги Free, а то там только на один объект.
baster128 вне форума Ответить с цитированием
Старый 15.06.2010, 01:56   #7
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Понял почему нужно "vesh.KolTepl;"... Но если печатается поле класса, то зачем тогда функциями делать, а не процедурами? Я бы по другому делал...
Вот только формул про "количество теплоты" не помню уже, надо вспоминать... =(

И думаю пар тогда уж не при "t=100", а при "t>100"...

Цитата:
на все Create-ы свои сделать по окончании проги Free, а то там только на один объект.
А там и так только один объект...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 15.06.2010, 02:46   #8
baster128
Форумчанин
 
Аватар для baster128
 
Регистрация: 24.04.2010
Сообщений: 205
По умолчанию

Цитата:
Сообщение от DomiNick Посмотреть сообщение
Понял почему нужно "vesh.KolTepl;"... Но если печатается поле класса, то зачем тогда функциями делать, а не процедурами? Я бы по другому делал...
Вот только формул про "количество теплоты" не помню уже, надо вспоминать... =(

И думаю пар тогда уж не при "t=100", а при "t>100"...


А там и так только один объект...
Там Creat-ы на все три объекта в зависимости от условия. От Free беды не будет он сначала проверяет наличие указателя и если указатель nil, он игнорирует.
baster128 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объекты hidalgo Паскаль, Turbo Pascal, PascalABC.NET 0 03.06.2010 17:35
Объекты в С++ MasterGH Общие вопросы C/C++ 3 13.11.2009 22:14
объекты в си Барби Помощь студентам 1 13.05.2008 01:10
3D объекты в Си g0liath Помощь студентам 2 20.04.2008 21:39