Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 22.12.2008, 11:26   #1
Ink_90
 
Регистрация: 22.12.2008
Сообщений: 4
По умолчанию Помогите разобраться с задачей, уже в отчаянии (+)

Нормально компилируется, но выдает ошибку "cannot run a unit"

Привожу текст программы для компиляции trans1.tpu
unit trans1;
interface
Type
Transport=object
S,stoim:real;
Procedure Init(s1:real);
end;

Autobus=object(Transport)
bustype:integer;
bag:integer;
bust:real;
Constructor Init(bustype1, bag1:integer; s1,bust1:real);
Destructor Done;virtual;
Procedure Stoimost; virtual;
end;

Poezd=object(Transport)
raintype: integer;
ctype:integer;
rst:integer;
raint:real;
Constructor Init(raintype1,ctype1,rst1:integer; s1,raint1:real);
Destructor Done;virtual;
Procedure Stoimost; virtual;
end;

Samolet=object(Transport)
airt:integer;
clairs:integer;
airts:real;
Constructor Init(airt1, clairs1:integer; s1,airts1:real);
Destructor Done;virtual;
Procedure Stoimost; virtual;
end;

implementation

Procedure Transport.Init(s1:real);
begin
S:=s1;
End;

Constructor Autobus.Init(bustype1,bag1:integer; s1,bust1:real);
Begin
Transport.Init(s1);
bustype:=bustype1;
bag:=bag1;
bust:=bust1;
End;
Destructor Autobus.Done;
Begin
End;

Constructor Poezd.Init(raintype1,ctype1,rst1:in teger; s1,raint1:real);
Begin
Transport.Init(s1);
Raintype:=raintype1;
Ctype:=ctype1;
Rst:=rst1;
Raint:= raint1;
End;
Destructor Poezd.Done;
Begin
End;

Constructor Samolet.Init(airt1,Clairs1:integer; s1,airts1:real);
Begin
Transport.Init(s1);
airt:=airt1;
clairs:=Clairs1;
airts:=airts1;
End;
Destructor Samolet.Done;
Begin
End;

Procedure Autobus.Stoimost;
Begin
stoim:= bustype*50 + bag*100+bust + 1.1 * S;
writeln(stoim);
End;

Procedure Poezd.Stoimost;
Begin
stoim:= raintype*50 + ctype*30 + rst*55+ raint + 1.02*S;
writeln(stoim);
End;

Procedure Samolet.Stoimost;
Begin
stoim:= airt*100+clairs*120 + airt + 3.7*S;
End;
End.


А это текст основной программы под именем trans.pas

Uses Crt,trans1;
var: trans_type:integer;
rasstoyanie: real;

Procedure Autobus_Stoim()
Begin
Writeln (‘Введите тип автобуса’);
Writeln (‘0. ПАЗ’);
Writeln (‘1. Икарус’);
Writeln (‘2. Мерседес’);
Readlin (bustype1);

Writeln (‘Имеется ли багаж? ’);
Writeln (‘0. Нет’);
Writeln (‘1. Да’);
Readln (bag1);
Readln (‘Введите другие сборы ’, bust1);
Autobus.Init(bustype1,bag1,s1,bust1 );
Autobus.Stoimost; -
End;

Procedure Poezd_Stoim()
Begin
Writeln (‘Введите тип поезда’);
Writeln (‘0. Пассажирский’);
Writeln (‘1. Скорый’);
Writeln (‘2. Фирменный’);
Readln (raintype1);
Writeln (‘Введите тип вагона ’);
Writeln (‘0. Общий’);
Writeln (‘1. Плацкартный’);
Writeln (‘2. Купейный’);
Writeln (‘3. Мягкий’);
Readln(ctype1);
Writeln (‘Укажите тип обслуживания’);
Writeln (‘0. Обычный’);
Writeln (‘1. Эконом’);
Writeln (‘2. Коммерческий’);
Readln(rst1);
Readln (‘Введите другие сборы ’, raint1);
Poezd.Init(raintype1,ctype1,rst1,s1 ,raint1);
Poezd.Stoimost;

Procedure Samolet_Stoim()
Begin
Writeln (‘Введите тип самолета’);
Writeln (‘0. Ан-124’);
Writeln (‘1. Ту-154’);
Writeln (‘2. Ту-204’);
Readln (raintype1);
Writeln (‘Введите класс места ’);
Writeln (‘0. Эконом’);
Writeln (‘1. Коммерческий’);
Writeln (‘2. Первый’);
Readln(clairs1);
Readln (‘Введите другие сборы ’, airts1);
Samolet.Init(airt1,Clairs1,s1,airts 1);
Samolet.Stoimost;
End;

Begin
clrscr;
writeln ('Введите тип транспорта:');
writeln ('1. Автобус');
writeln ('2. Поезд');
writeln ('3. Самолет');
read(trans_type);
clrscr;

(writeln 'Введите расстояние в км');
read(rasstoyanie);
case trans_type of
1 : Autobus_Stoim;
2 : Poezd_Stoim;
3 : Samolet_Stoim;
else exit end;
End.

Все выходные потратил на написание этого кода, компилируется нормально, но вот упорно выдает ошибку "cannot run a unit". Хотя в меню Compile указал Destination ->Disk, Primary file -> trans.pas
Ink_90 вне форума Ответить с цитированием
Старый 22.12.2008, 16:39   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
компилируется нормально,
Сомневаюсь.
Вот сразу две ошибки, дальше не смотрел.
var: trans_type:integer;
Procedure Autobus_Stoim()
puporev вне форума Ответить с цитированием
Старый 22.12.2008, 17:34   #3
Ink_90
 
Регистрация: 22.12.2008
Сообщений: 4
По умолчанию Спасибо за ответ. Ошибки эти исправил, но вышла одна ошибка 143

"Invalid procedure or function reference"
в месте основной программы помеченной жирным шрифтом

Пожалуйста подскажите , что в чем моя ошибка?

Привожу исправленные тексты программ

{файл trans.pas для создания trans.tpu}

unit trans;
interface
Type
transport=object
s,stoim:real;
Procedure Init(s1:real);
end;

autobus=object(transport)
bustype:integer;
bag:integer;
bust:real;
Constructor Init(bustype1, bag1:integer; s1,bust1:real);
Destructor Done;virtual;
Procedure stoim_bilet; virtual;
end;

poezd=object(transport)
raintype: integer;
ctype:integer;
rst:integer;
raint:real;
Constructor Init(raintype1,ctype1,rst1:integer; s1,raint1:real);
Destructor Done;virtual;
Procedure stoim_bilet; virtual;
end;

samolet=object(Transport)
airt:integer;
clairs:integer;
airts:real;
Constructor Init(airt1, clairs1:integer; s1,airts1:real);
Destructor Done;virtual;
Procedure stoim_bilet; virtual;
end;

implementation

Procedure transport.Init(s1:real);
begin
s:=s1;
End;

Constructor autobus.Init(bustype1,bag1:integer; s1,bust1:real);
Begin
transport.Init(s1);
bustype:=bustype1;
bag:=bag1;
bust:=bust1;
End;
Destructor autobus.Done;
Begin
End;

Constructor poezd.Init(raintype1,ctype1,rst1:in teger; s1,raint1:real);
Begin
transport.Init(s1);
raintype:=raintype1;
ctype:=ctype1;
rst:=rst1;
raint:= raint1;
End;
Destructor poezd.Done;
Begin
End;

Constructor samolet.Init(airt1,Clairs1:integer; s1,airts1:real);
Begin
transport.Init(s1);
airt:=airt1;
clairs:=Clairs1;
airts:=airts1;
End;
Destructor samolet.Done;
Begin
End;

Procedure autobus.stoim_bilet;
Begin
stoim:= bustype*50 + bag*100+bust + 1.1 * S;
writeln(stoim);
End;

Procedure poezd.stoim_bilet;
Begin
stoim:= raintype*50 + ctype*30 + rst*55+ raint + 1.02*S;
writeln(stoim);
End;

Procedure samolet.stoim_bilet;
Begin
stoim:= airt*100+clairs*120 + airt + 3.7*S;
End;
End.


{файл основной программы prog.pas}
Uses Crt,tran;
var trans_type:integer;
rasst: real;

Procedure autobus_stoim_bilet;
var bustype1,bag1:integer;
s1,bust1:real;
Begin
writeln ('‘Введите тип автобуса’');
writeln ('‘0. ПАЗ’');
writeln ('‘1. Икарус’');
writeln ('‘2. Мерседес’');
readln (bustype1);

writeln ('‘Имеется ли багаж? ’');
writeln ('‘0. Нет’');
writeln ('‘1. Да’');
readln (bag1);
readln (bust1);
autobus.Init(bustype1,bag1,s1,bust1 );
autobus.stoim_bilet;
End;

Procedure poezd_stoim_bilet()

Begin
writeln (‘Введите тип поезда’);
writeln (‘0. Пассажирский’);
writeln (‘1. Скорый’);
writeln (‘2. Фирменный’);
readln (raintype1);
writeln (‘Введите тип вагона ’);
writeln (‘0. Общий’);
writeln (‘1. Плацкартный’);
writeln (‘2. Купейный’);
writeln (‘3. Мягкий’);
readln(ctype1);
writeln (‘Укажите тип обслуживания’);
writeln (‘0. Обычный’);
writeln (‘1. Эконом’);
writeln (‘2. Коммерческий’);
readln(rst1);
readln (‘Введите другие сборы ’, raint1);
poezd.Init(raintype1,ctype1,rst1,s1 ,raint1);
poezd.stoim_bil;

Procedure samolet_stoim_bilet()
Begin
writeln (‘Введите тип самолета’);
writeln (‘0. Ан-124’);
writeln (‘1. Ту-154’);
writeln (‘2. Ту-204’);
readln (raintype1);
writeln (‘Введите класс места ’);
writeln (‘0. Эконом’);
writeln (‘1. Коммерческий’);
writeln (‘2. Первый’);
readln(clairs1);
readln (‘Введите другие сборы ’, airts1);
samolet.Init(airt1,Clairs1,s1,airts 1);
samolet.stoim_bil;
End;

Begin
clrscr;
writeln ('Введите тип транспорта:');
writeln ('1. Автобус');
writeln ('2. Поезд');
writeln ('3. Самолет');
read(trans_type);
clrscr;

(writeln 'Введите расстояние в км');
read(rasstoyanie);
case trans_type of
1 : autobus_stoim_bilet;
2 : poezd_stoim_bilet;
3 : samolet_stoim_bilet;
else exit end;
End.

Буду очень признателен за подсказку
Ink_90 вне форума Ответить с цитированием
Старый 22.12.2008, 17:42   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вот здесь например не присвоено значение s1. Дальше по тексту объявлены процедуры со скобками, а параметры не объявлены.
autobus.Init(bustype1,bag1,s1,bust1 );
puporev вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите с задачей разобраться r3krut Паскаль, Turbo Pascal, PascalABC.NET 1 16.12.2007 16:43