PDA

View Full Version : برنامه خرد کردن پول به زبان پاسکال



qanewaisi
پنج شنبه 20 خرداد 1389, 09:51 صبح
سلام
لطفا هرکی این برنامه رو داره و یا توضیحاتی درباره این برنامه داره اینجا بزاره.
با تشکر

qanewaisi
پنج شنبه 20 خرداد 1389, 10:23 صبح
الگوریتم خرد کردن پول به سکه های 50و20و10و5و2و1 تومانی

1- شروع

2- A=0,d=0

3- A را از ورودی بگیر

4- D=a/50

5- اگر d>0 ، آنگاه d,50 را چاپ کن

6- A=a-(d*50)

7- D=a/20

8- اگر d>0 ، آنگاه d,20 را چاپ کن

9- A=a-(d*20)

10- D=a/10

11- اگر d>0 ، آنگاه d,10 را چاپ کن

12- A=a-(d*10)

13- D=a/5

14- اگر d>0 ، آنگاه d,5 را چاپ کن

15- A=a-(d*5)

16- D=a/2

17- اگر d>0 ، آنگاه d,2 را چاپ کن

18- A=a-(d*2)

19- اگر a>0 ، a,1 را چاپ کن

20- پایان

qanewaisi
پنج شنبه 20 خرداد 1389, 10:40 صبح
اینم برنامه ای هست که من نوشتم!
فقط نمی دونم چرا کار نمی کنه

Program add;
Var a,b,c:integer;
var d:real;
begin
a:=1000;
d:=0;

d:=a/50;
if d>0
then writeln(' 50 => ',d);
a=a-(d*50);

d:=a/20;
if d>0
then writeln(' 20 => ',d);
a=a-(d*20);


d:=a/10;
if d>0
then writeln(' 10 => ',d);
a=a-(d*10);

d:=a/5;
if d>0
then writeln(' 5 => ',d);
a=a-(d*5);


d:=a/2;
if d>0
then writeln(' 2 => ',d);
a=a-(d*2);
if a>0
then writeln(' 1 => ',a);





end.



(البته اصلا پاسکال تو ذهنم نمونده وگرنه اینجا تایپک نمی زدم)

Felony
پنج شنبه 20 خرداد 1389, 11:42 صبح
1. از تگ کد برای قرار دادن کد استفاده کنید .
2. کدنویسیتون رو اصلاح کنید ، خیلی کثیف و ناخوانا هستش .
3. کدتون پر از خرده اشکاله .

4. کد تصحیح شده رو براتون قرار دادم ، البته من الگوریتمتون رو بررسی نکردم که ببینم برنامتون درست کار میکنه یا نه و وفقط کدی که گزاشته بودید رو تغییر دادم تا اجرا بشه :

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

Var
A, D: Integer;
begin
Writeln('Enter an integer number : ');
Readln(A);

D:= A div 50;
if D>0 then
begin
writeln(' 50 => ',D);
A:= A-(D*50);
end;

D:= A div 20;
if D>0then
begin
writeln(' 20 => ',D);
A:= A-(D*20);
end;

D:= A div 10;
if D>0then
begin
writeln(' 10 => ',D);
A:= A-(D*10);
end;

D:= A div 5;
if D>0 then
begin
writeln(' 5 => ',D);
A:= A-(D*5);
end;

D:= A div 2;
if D>0 then
begin
writeln(' 2 => ',D);
A:= A-(D*2);
end;

if A>0 then
writeln(' 1 => ',A);

Readln;
end.

qanewaisi
پنج شنبه 20 خرداد 1389, 15:18 عصر
1. از تگ کد برای قرار دادن کد استفاده کنید .
2. کدنویسیتون رو اصلاح کنید ، خیلی کثیف و ناخوانا هستش .
3. کدتون پر از خرده اشکاله .

4. کد تصحیح شده رو براتون قرار دادم ، البته من الگوریتمتون رو بررسی نکردم که ببینم برنامتون درست کار میکنه یا نه و وفقط کدی که گزاشته بودید رو تغییر دادم تا اجرا بشه :

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

Var
A, D: Integer;
begin
Writeln('Enter an integer number : ');
Readln(A);

D:= A div 50;
if D>0 then
begin
writeln(' 50 => ',D);
A:= A-(D*50);
end;

D:= A div 20;
if D>0then
begin
writeln(' 20 => ',D);
A:= A-(D*20);
end;

D:= A div 10;
if D>0then
begin
writeln(' 10 => ',D);
A:= A-(D*10);
end;

D:= A div 5;
if D>0 then
begin
writeln(' 5 => ',D);
A:= A-(D*5);
end;

D:= A div 2;
if D>0 then
begin
writeln(' 2 => ',D);
A:= A-(D*2);
end;

if A>0 then
writeln(' 1 => ',A);

Readln;
end.

دوست عزیز واژه دیگه ای به جای " کثیف " به ذهنوتون نمی رسید ؟؟؟ (من که گفتم پاسکال رو تقریبا یادم رفته) شما که گفتین برنامه اجرا میشه !!،این کجاش اجرا میشه ؟ به هر حال تشکر

qanewaisi
پنج شنبه 20 خرداد 1389, 15:20 عصر
دوستان لطفا کمک کنید که این برنامه تکمیل بشه! فقط دستورهای نمایشی رو یادم رفته(مثلا برای چاپ عدد اعشاری کامل بدون نمایش علمی )

Felony
پنج شنبه 20 خرداد 1389, 19:56 عصر
دوست عزیز واژه دیگه ای به جای " کثیف " به ذهنوتون نمی رسید ؟؟؟ (من که گفتم پاسکال رو تقریبا یادم رفته)
ناراحت نشو اصولا به این کدها کثیف یا بد بو میگن ، نحوه کدنویسی ( کثیف یا ... ) ربطی به یاد رفتن سینتکس زبان نداره !
یعنی تورفتگی کد یا ... تو زبان های برنامه نویسی مختلف با هم فرق داره ؟!




من برنامه رو با Console دلفی تصحیح کردم ، چون سیستم عامل من ویندوز 7 نسخه 64 بیت هست روش پاسکال نصب نمیشه که بخوام با پاسکال تست کنم ولی در Console دلفی درست عمل میکنه ، تنها مشکل مربوط به این قسمت هست ( چون تو کنسول دلفی نوشتمش ) :

{$APPTYPE CONSOLE}

uses
SysUtils;

با این تعویضش کن :
uses WinCrt;

چون پاسکال کتابخانه ای به نام Sysutils نداره ، باقی کد مشکلی نداره .

SAASTN
پنج شنبه 20 خرداد 1389, 23:10 عصر
این تابع رو نوشتم که تقسیماتو تو یه string بر می گردونه. یه دستی به سرش بکشین میشه به اون صورتی که تو پاسکال می خواین درش آورد:
function DevideMoney(Money: Integer): String;
const
Coins : array [0 .. 5] of Integer = (50, 20, 10, 5, 2, 1);
var
I, D: Integer;
begin
Result := '';
for I := 0 to Length(Coins) - 1 do
begin
D := Money div Coins[I];
if D > 0 then
begin
Result := Format('%s %d => %d,', [Result, Coins[I], D]);
Money := Money mod Coins[I];
end;
end;
end;

tdkhakpur
پنج شنبه 20 خرداد 1389, 23:29 عصر
تمام حالتهای خرد کردن یک وجه 50 را با توجه به وجه های 2و 5و 3 را نشان میدهد.


program Project1;
uses
SysUtils;

var
buff : array [0..100] of integer;
c : integer;
procedure calculate(rial, item, c : integer);
var
i: integer;
begin
if (rial-item)>0 then
begin
buff[c] := item;
if (rial-5)>0 then
calculate(rial-5, 5, c+1);
if (rial-3)>0 then
calculate(rial-3, 3, c+1);
if (rial-2)>0 then
calculate(rial-2, 2, c+1);
end
else
begin
writeln('{');
for i:=0 to c do
write(buff[i],',');
write('}');
readln;
end;
end;
begin
c := 0;
calculate(50, 5, 0);
end.

qanewaisi
جمعه 21 خرداد 1389, 16:48 عصر
سلام
دوستان ببخشید که دیر جواب دادم!

از همه شما ممنونم.

من خودم برنامه رو با توجه به چیزی که آقای ماهان داده بودند کمی اصلاح کردم و شد چیزی که می خواستم :



program Project1;









Var

A, D , C: Integer;

begin

Writeln('Enter an integer number : ');

Readln(A);

C:= A;


D:= A div 200;

if D>0 then

begin

writeln(' 200 => ',D);

A:= A-(D*200);

end;

A:= C ;


D:= A div 100;

if D>0 then

begin

writeln(' 100 => ',D);

A:= A-(D*100);

end;

A:= C ;


D:= A div 50;

if D>0 then

begin

writeln(' 50 => ',D);

A:= A-(D*50);

end;


A:= C ;

D:= A div 20;

if D>0then

begin

writeln(' 20 => ',D);

A:= A-(D*20);

end;

A:= C ;

D:= A div 10;

if D>0then

begin

writeln(' 10 => ',D);

A:= A-(D*10);

end;

A:= C ;

D:= A div 5;

if D>0 then

begin

writeln(' 5 => ',D);

A:= A-(D*5);

end;
A:= C ;


D:= A div 2;

if D>0 then

begin

writeln(' 2 => ',D);

A:= A-(D*2);

end;

A:= C ;

if A>0 then

writeln(' 1 => ',A);



Readln;

end.


به هر حال از همه شما ممنونم.

me.enik
دوشنبه 15 خرداد 1391, 19:14 عصر
من برنامه رو با Console دلفی تصحیح کردم ، چون سیستم عامل من ویندوز 7 نسخه 64 بیت هست روش پاسکال نصب نمیشه

گرچه زیاد مربوط به این تاپیک نمیشه ولی
من free pascal رو تست کردم, مشکلی نداشته.