View Full Version : برنامه خرد کردن پول به زبان پاسکال
  
qanewaisi
پنج شنبه 20 خرداد 1389, 10:51 صبح
سلام
لطفا هرکی این برنامه رو داره و یا توضیحاتی درباره این برنامه داره اینجا بزاره.
با تشکر
qanewaisi
پنج شنبه 20 خرداد 1389, 11: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, 11: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, 12: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, 16: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, 16:20 عصر
دوستان لطفا کمک کنید که این برنامه تکمیل بشه! فقط دستورهای نمایشی رو یادم رفته(مثلا برای چاپ عدد اعشاری کامل بدون نمایش علمی )
Felony
پنج شنبه 20 خرداد 1389, 20:56 عصر
دوست عزیز واژه دیگه ای به جای " کثیف " به ذهنوتون نمی رسید ؟؟؟ (من که گفتم پاسکال رو تقریبا یادم رفته) 
ناراحت نشو اصولا به این کدها کثیف یا بد بو میگن ، نحوه کدنویسی ( کثیف یا ... ) ربطی به یاد رفتن سینتکس زبان نداره ! 
یعنی تورفتگی کد یا ... تو زبان های برنامه نویسی مختلف با هم فرق داره ؟! 
من برنامه رو با Console دلفی تصحیح کردم ، چون سیستم عامل من ویندوز 7 نسخه 64 بیت هست روش پاسکال نصب نمیشه که بخوام با پاسکال تست کنم ولی در Console دلفی درست عمل میکنه ، تنها مشکل مربوط به این قسمت هست ( چون تو کنسول دلفی نوشتمش )  :
{$APPTYPE CONSOLE}
uses
  SysUtils;
با این تعویضش کن :
uses WinCrt;
چون پاسکال کتابخانه ای به نام Sysutils نداره ، باقی کد مشکلی نداره .
SAASTN
جمعه 21 خرداد 1389, 00: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
جمعه 21 خرداد 1389, 00: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, 17: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, 20:14 عصر
من برنامه رو با Console دلفی تصحیح کردم ، چون سیستم عامل من ویندوز 7 نسخه 64 بیت هست روش پاسکال نصب نمیشه
گرچه زیاد مربوط به این تاپیک نمیشه ولی
من free pascal رو تست کردم, مشکلی نداشته.
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.