Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lazarus
Войти
Регистрация
Восстановить пароль
 
biowolf
0 / 0 / 0
Регистрация: 15.01.2015
Сообщений: 9
#1

Создать класс "Обыкновенная дробь"

17.01.2015, 13:10. Просмотров 497. Ответов 2
Метки нет (Все метки)

Создать класс «обыкновенная дробь», в котором пере-
грузить операции < и >.
выдает ошибку в чем проблемма?
вот код программы.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
unit test;
{$mode objfpc}{$H+}
interface
uses
Classes , SysUtils , LResources , Forms , Controls , Graphics ,
Dialogs , StdCtrls ;
type
{ TForm1 }
TForm1 = class (TForm)
Button1 : Tbutton ;
Edit1 : Tedit ;9.4. Перегрузка операций 405
Edit2 : Tedit ;
Edit3 : Tedit ;
Edit4 : Tedi t ;
Label1 : TLabel ;
Label2 : TLabel ;
Label3 : TLabel ;
Label4 : TLabel ;
Memo1: Tmemo;
procedure Button1Click ( Sender : TObject ) ;
private
{ private declarations }
public
{ public declarations }
end;
type
TOb_Drob = class
private
Ch: integer ;
Zn : integer ;
public
constructor Create ( a , b : integer ) ;
function DrobToStr ( ) : String ;
end;
//Метод перегрузки оператора <
operator <(const a , b : TOb_Drob) r : boolean ;
//Метод перегрузки оператора >
operator >(const a , b : TOb_Drob) r : boolean ;
var
Form1 : Tform1 ;
d1 , d2 : TOb_Drob;
implementation
constructor TOb_drob.Create ( a , b : integer ) ;
begin
Ch:=a ; Zn:=b ;
inherited Create ;
end;
//описание метода перегрузки оператора < сравнения406 Глава 9. Объектно-ориентированное программирование
//обыкновенных дробей
operator <(const a , b : TOb_Drob) r : boolean ;
begin
if a.Ch*b.Zn <b.Ch * a.Zn then
r :=true
else r := false ;
end;
//описание метода перегрузки оператора > сравнения
//обыкновенных дробей
operator >(const a , b : TOb_Drob) r : boolean ;
begin
if a.Ch*b.Zn > b.Ch * a.Zn then
r :=true
else r := false ;
end;
//описание метода формирования строки
//для вывода дроби на форму
function TOb_Drob.DrobToStr ( ) : String ;
begin
if Zn<>0 then
if Ch*Zn>0 then
DrobToStr:= IntToStr (Ch)+ ' / ' + IntToStr (Zn )
else
DrobToStr:= '-'+IntToStr ( abs (Ch))+ ' / '+
IntTostr ( abs (Zn ) )
else
DrobToStr:= 'Dividing_by_a_zero'
end;
procedure TForm1 . Button1Click ( Sender : TObject ) ;
Var Str1 : String ;
a , b : integer ;
begin
//чтение данных из полей ввода формы
a:= StrToInt ( Edit1.Text ) ; //числитель
b:= StrToInt ( Edit2.Text ) ; //значенатель
//инициализация первой дроби
d1:=TOb_Drob.Create ( a , b ) ;
//чтение данных из полей ввода формы
a:= StrToInt ( Edit3.Text ) ;
b:= StrToInt ( Edit4.Text ) ;
//инициализация второй дроби
d2:=TOb_Drob.Create ( a , b ) ;
//Формирование строки вывода и
//добавление ее в поле Memo1.9.5. Задачи для самостоятельного решения 407
//Вывод исходной дроби d1.
Str1 := 'Drob_1_'+d1.DrobToStr ( ) ;
Memo1.Lines.Add( Str1 ) ;
//Вывод исходной дроби d2.
Str1 := 'Drob2_'+d2.DrobToStr ( ) ;
Memo1.Lines.Add( Str1 ) ;
//сравнение дробей с помощью перегрузки
//операторов < и > и вывод сообщения.
if d1<d2 then
Str1 := 'Drob1_<_Drob2'
else
if d1>d2 then
Str1 := 'Drob1_>_Drob2'
else
Str1 := 'Drob1_=_Drob2';
Memo1.Lines.Add(Str1) ;
end;
initialization
{$I unit1.lrs}
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2015, 13:10
Ответы с готовыми решениями:

Создать класс обыкновенная дробь, поля класса - числитель и знаменатель
Создать класс обыкновенная дробь, поля класса - числитель и знаменатель. Методы класса: сокращение...

ООП: Создать класс "Вектор на плоскости"
5)Создать класс вектор на плоскости поля класса - координаты вектора. Методы класса: вычисление...

Создать класс "преподаватель"
Создать класс &quot;преподаватель&quot;, что имеет имя и стаж работы и размер заработной платы. В описанном...

Создать класс "квадрат"
Создать класс квадрат, член класса — длина стороны. Предусмотреть в классе методы вычисления и...

Ошибка "Fatal: Syntax error, ";" expected but "." found"
звучит задание: создай программу, в которой можно преподнести введенное пользователем число к...

2
biowolf
0 / 0 / 0
Регистрация: 15.01.2015
Сообщений: 9
17.01.2015, 13:11  [ТС] #2
Создать класс "Обыкновенная дробь"
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25983 / 17424 / 6910
Регистрация: 22.10.2011
Сообщений: 30,668
Записей в блоге: 6
17.01.2015, 14:58 #3
Цитата Сообщение от biowolf Посмотреть сообщение
в чем проблемма?
В том, что это LCL-приложение, а не обычная консольная программа. Переезжаем...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2015, 14:58

Проект вызвал класс исключения "External:SIGSEGV"
Почти завершил написание кода, как программа выдает ошибку: Проект вызвал класс исключения...

Класс "Геометрическая прогрессия", отследить ввод знаменателя = 1
Как в классе Геометрическая прогрессия, при вводе значения шага &quot;r=1 &quot;не получать крит эрор...

Reset вызвал класс исключений "RunError2"
Запись в файл делал, а вот прочитать не могу AssignFile(fileStructur, opendirectory +...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru