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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2015, 20:22   #1
manchester_alan
Форумчанин
 
Регистрация: 07.01.2015
Сообщений: 231
По умолчанию Помогите разобраться с ошибкой...

Можете исправить ошибки..? Консольное приложение, классы...
Вложения
Тип файла: rar Новая папка.rar (2.3 Кб, 7 просмотров)
manchester_alan вне форума Ответить с цитированием
Старый 16.06.2015, 20:41   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
program Project2;

{$MODE Delphi}

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Unit1 in 'Unit1.pas';

var
	x, y: TMoney;
	rubles: Integer;
	kopecks: SmallInt;
begin
	write('Enter first amount: ');
	readln(rubles);
	readln(kopecks);
	x := TMoney.Create(rubles, kopecks);

	write('Enter second amount: ');
	readln(rubles);
	readln(kopecks);
	y := TMoney.Create(rubles, kopecks);

	write('x = '); x.PrintLn;
	write('y = '); y.PrintLn;
	write('x + y = '); x.Plus(y).PrintLn;
	write('x - y = '); x.Minus(y).PrintLn;
	writeln('x / y = ', x.DivBy(y));
	
	write('x * 2.5 = '); x.MulBy(2.5).PrintLn;
	write('x / 4  = '); x.DivBy(4).PrintLn;
	writeln('x = y: ', Cmp(x, y) = 0);
	writeln('x < y: ', Cmp(x, y) < 0);
	writeln('x > y: ', Cmp(x, y) > 0);
  readln;
end.
Код:
unit Unit1;

interface

type

{ TMoney }

   TMoney=class

	protected
		_rubles: 	Integer;
		_kopecks:	ShortInt;

	public

		constructor Create(rubles: Integer; kopecks: ShortInt);
		constructor Copy(const m: TMoney);


		property rubles: Integer read _rubles;
		property kopecks: Shortint read _kopecks;


		procedure Print;
		procedure PrintLn;
		function Add(const m: TMoney): TMoney;
		function Plus(const m: TMoney): TMoney;
		function Sub(const m: TMoney): TMoney;
		function Minus(const m: TMoney): TMoney;
		function DivBy(const m: TMoney): Double; overload;
		function Divide(d: Double): TMoney;
		function DivBy(d: Double): TMoney; overload;
		function Mul(d: Double): TMoney;
    function MulBy(d: Double): TMoney;
	end;


function Cmp(const m1, m2: TMoney): Longint;

implementation
 uses sysutils;

 function Cmp(const m1, m2: TMoney): Longint;
 begin
 Result:=m1.rubles-m2.rubles;
 end;

constructor TMoney.Create(rubles: Integer; kopecks: ShortInt);
begin
	_rubles := rubles;
	_kopecks := kopecks;
	if (_rubles < 0) then
	begin
		Dec(_rubles);
		_kopecks := 100 - _kopecks
	end
end;


constructor TMoney.Copy(const m: TMoney);
begin
	_rubles := m._rubles;
	_kopecks := m._kopecks
end;


procedure TMoney.Print;
var
	rubles: Integer;
	kopecks: ShortInt;
begin
	rubles := _rubles;
	kopecks := _kopecks;
	if (rubles < 0) then
	begin
		Inc(rubles);
		kopecks := 100 - kopecks;
		write('-')
	end;
	write(rubles, ',', Format('%.*d', [2, kopecks]))
end;


procedure TMoney.PrintLn;
begin
	Print;
	writeln
end;


function TMoney.Add(const m: TMoney): TMoney;
begin
	_rubles += m._rubles;
	_kopecks += m._kopecks;
	if (_kopecks > 100) then
	begin
		Inc(_rubles);
		_kopecks -= 100
	end;
	Result := self
end;

function TMoney.Plus(const m: TMoney): TMoney;
begin
   Result:=Add(m);
end;


function TMoney.Sub(const m: TMoney): TMoney;
var
	kopecks: Integer;
begin
	_rubles -= m._rubles;
	kopecks := _kopecks;
	kopecks -= m._kopecks;
	if (kopecks < 0) then
	begin
		Dec(_rubles);
		kopecks += 100
	end;
	_kopecks := kopecks;
	Result := self
end;

function TMoney.Minus(const m: TMoney): TMoney;
begin

end;


function TMoney.DivBy(const m: TMoney): Double;
var
	amount1, amount2: Double;
begin
	amount1 := _rubles + _kopecks / 100.0;
	amount2 := m._rubles + m._kopecks / 100.0;
	Result := amount1 / amount2
end;


function TMoney.Divide(d: Double): TMoney;
var
	amount: Double;
begin
	amount := (100.0 * _rubles + _kopecks) / d;
	if (amount >= 0) then
	begin
		_rubles := Trunc(amount / 100);
		_kopecks := Trunc(amount - 100 * _rubles)
	end
	else
	begin
		_rubles := Trunc(-amount / 100);
		Inc(_rubles);
		_kopecks := Trunc(amount + 100 * _rubles)
	end;
	Result := self
end;

function TMoney.DivBy(d: Double): TMoney;
begin

end;

function TMoney.Mul(d: Double): TMoney;
begin

end;

function TMoney.MulBy(d: Double): TMoney;
begin

end;

end.
Не копипастить! Правлено Лазарем.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.06.2015, 20:50   #3
manchester_alan
Форумчанин
 
Регистрация: 07.01.2015
Сообщений: 231
По умолчанию

не что делать??)) спасибо))
manchester_alan вне форума Ответить с цитированием
Старый 16.06.2015, 20:54   #4
manchester_alan
Форумчанин
 
Регистрация: 07.01.2015
Сообщений: 231
По умолчанию

а вот где += это как исправить??
manchester_alan вне форума Ответить с цитированием
Старый 16.06.2015, 21:51   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А че в твоем Делфи такого еще нет?
Ну вообще то a+=b это a:=a+b.
Смекаешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.06.2015, 22:18   #6
Antony41
Пользователь
 
Аватар для Antony41
 
Регистрация: 20.03.2009
Сообщений: 99
По умолчанию

Цитата:
Ну вообще то a+=b это a:=a+b.
Это с какой версии начали сишный код внедрять? в XE5 такое не работает
Antony41 вне форума Ответить с цитированием
Старый 17.06.2015, 07:11   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Это с какой версии начали сишный код внедрять?
В Лазарусе, знаю, есть такое. Может это и код собственно не на Делфи изначально был )
Вроде в ХЕ какой-то тоже так возможно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться с ошибкой! Forbidden_fruit Помощь студентам 0 01.03.2014 12:22
Помогите разобраться с ошибкой alex0097 PHP 1 24.11.2013 18:53
помогите разобраться с ошибкой Lokos БД в Delphi 0 18.12.2009 09:47
с ошибкой разобраться помогите mshunter Помощь студентам 2 13.05.2009 11:47
Помогите разобраться с ошибкой Muchacho Помощь студентам 8 08.11.2008 23:39