PDA

View Full Version : سوال: برنامه نویسی گرافیکی با PASCAL



pouria2013
یک شنبه 10 شهریور 1392, 13:29 عصر
سلام دوستان این برنامه رو نگاه کنید
یک مشکل داره اونم اینکه نمودار رسم می شه ولی فقط می توانم از اعداد 0 تا 9 استفاده کنم می خواستم راهنمایی کنین چجوری کاملش کنم

ممنونم
Program Grap;
uses graph;
var
Gd,gm,i,a:integer;
Begin
InitGraph(gd,gm,'d:\bp\bgi');
a:=47;
setbkcolor(1);
line(10,200,620,200);
line(300,450,300,10);
outtextxy(619,197,'>');
outtextxy(297,6,'^');
SetTextStyle(gothicFont , HorizDir , 3);
setcolor(14);
OutTextXY(390,90,'Y = X');
line(48,388,500,50);
for i:= 20 to 600 do
Begin
if (i mod 12)=0 then
Begin
SetTextStyle(SmallFont , HorizDir ,4);
OutTextXY(i,194 , '|');
End;
End;
i:=0;
for i:= 20 to 430 do
Begin
if (i mod 12) = 0 then
Begin
SetTextStyle(SmallFont , HorizDir , 4);
OutTextXY(298,i , '-');
End;
End;
{Mosbat samt rast}
for i:= 300 to 600 do
Begin
if (i mod 12) = 0 then
Begin
Repeat
a:=a+1;
OutTextXY(i,205,char(a));
Until a < 58 ;
End;
End;
a:=47;
{Manfi samte chap}
for i:= 300 downto 20 do
Begin
if (i mod 12) = 0 then
Begin
Repeat
a:=a+1;
OutTextXY(i,205,Char(a));
OutTextXY(i,210,'-');
Until a < 58 ;
End;
End;
{mosbat samt bala}
a:=47;
for i:= 195 downto 20 do
Begin
if (i mod 12) = 0 then
Begin
Repeat
a:=a+1;
OutTextXY(305,i,char(a));
Until a < 58 ;
End;
End;
a:=47;
{manfi samt paen}
for i:= 200 to 300 do
Begin
if (i mod 12) = 0 then
Begin
Repeat
a:=a+1;
OutTextXY(304,i,Char(a));
OutTextXY(295,i,'-');
Until a < 58 ;
End;
End;


{OutTextXY(25,205,'-23');
OutTextXY(10,205,'-22');}
Readln;

CloseGraph;
end.
http://www.uploadax.com/images/78149050494508975904.png

یوسف زالی
یک شنبه 10 شهریور 1392, 16:19 عصر
سلام.
شما وقتی می گی
Char(a) معلومه که داری فقط کاراکتر نمایش می دی.به جاش باید از Str استفاده کنی.

pouria2013
یک شنبه 10 شهریور 1392, 17:39 عصر
منظورتون اینکه بزنمOutTextXY(205,i,Str(a));
اگه این منظور شماست زدم ولی نشد
ممنونم از راهنمایی شما

یوسف زالی
یک شنبه 10 شهریور 1392, 20:22 عصر
نخیر. Str تابع نیست بلکه پروسیجره.

pouria2013
یک شنبه 10 شهریور 1392, 20:59 عصر
آقا ببخشید ما که هر کاری کردیم نشد شاید من گیجم نمی فهمم ولی اگه میشه یه مثال بزنید بفهمم
ممنونم

یوسف زالی
یک شنبه 10 شهریور 1392, 21:30 عصر
من پاسکال ندارم ولی یک چیزی مثل این بود:
Str(x, s); // converting

pouria2013
یک شنبه 10 شهریور 1392, 22:05 عصر
آقا خیلی ممنونم
ببخشید می خواستم ببینم با دلفی هم میشه یه همچین چیزی ساخت

یوسف زالی
یک شنبه 10 شهریور 1392, 23:46 عصر
در امضای من به بخش دلفی و ریاضی مراجعه کنید.

pouria2013
دوشنبه 11 شهریور 1392, 11:17 صبح
سلام
این برنامه که می بینید با پاسکال نوشته شده
می خواستم بدونم چجوری می شه یه همچین چیزی نوشت
با تشکر

http://www.uploadax.com/images/99545954785929206808.png

یوسف زالی
دوشنبه 11 شهریور 1392, 11:31 صبح
اولا که این یک صحبت دیگه هست و جاش در این تاپیک نیست.
ثانیا درخواست پروژه محسوب شده و تخلفه.
ثالثا چی این رو باید دید؟
یک عکسه که دو تا منو داره.
برای هر موضوع تاپیک مناسب ایجاد کنید و با توضیحات کافی، راهنمایی بخواهید.
موفق باشید.

pouria2013
دوشنبه 11 شهریور 1392, 11:42 صبح
این چی این هم به گرافیک مربوط نمی شه؟؟؟
http://axgig.com/images/80279658629657316085.png

یوسف زالی
دوشنبه 11 شهریور 1392, 12:19 عصر
نه.
نمی شه.
دستورات window رو سرچ کنید.

pouria2013
دوشنبه 11 شهریور 1392, 12:26 عصر
ممنونم
اگه بخواهم روی نمودار بالا تابع
y=2^x
رو رسم کنم از چه کدی باید استفاده کنم

یا بهتره انجوری بگم
اگه بخواهیم خط منحنی رسم کنیم چجوری می شه؟؟؟؟؟؟؟

یوسف زالی
دوشنبه 11 شهریور 1392, 13:01 عصر
برای تشکر از دکمه استفاده کن.

برای رسم منحنی اگر دایره و بیضی و بیزیه نیست، باید بصورت نقطه به نقطه اون رو بکشی.
در یک حلقه x رو افزایش می دی و y رو حساب می کنی و pixel رو روشن می کنی.

pouria2013
دوشنبه 11 شهریور 1392, 17:47 عصر
آقا شرمنده من می خواستم ببینم چه جوری می شه نقطه ی وسط صفحه رو پیدا کرد
می خواستم دقیق بشه تا بعدها انشاالله یه برنامه ای بنویسیم مثل متلب
البته با کمک شما
با تشکر

یوسف زالی
دوشنبه 11 شهریور 1392, 18:44 عصر
دوست من آتیش شما هم تنده ها.
همه سوالات رو در یک پست نمی شه پرسید.
صفحه رو تا کن، از اون طرف هم دوباره تا کن وسطش در میاد.
شوخی نکردم، راهش همینه.
موفق باشید.

pouria2013
دوشنبه 11 شهریور 1392, 19:56 عصر
به نظرتون با این کد چی نمی شه با این کد وسط رو پیدا کرد؟؟؟؟؟؟


program grapgtest;
Uses
Graph;
Var
Gd,Gm:integer;
Begin
InitGraph(Gd,Gm,'D:\bp\bgi');
line(0,0,GetMaxx,GetMaxy);
SetColor(LightGray);
Line(GetMaxx,0,0,GetMaxy);
Readln;
CloseGraph;
End.

یوسف زالی
پنج شنبه 14 شهریور 1392, 12:49 عصر
ببین گوش نمی کنی.
در مورد گرافیکی استاندارد پاسکال، برای رزولوشن های معمولی، شما 640 در 480 پیکسل داری که نقطه وسطش می شه 320 و 240.
با همون توابعی که نوشتی هم می تونی کار کنی و روش بهتریه.
اما اگر منظورت کشیدن یک + هست، کدی که نوشتی اشتباهه و X می سازه.
برای + گذاشتن، باید به این ترتیب عمل کنی:

یک خط از "0 و نصف ارتفاع بیشینه" به "درازای بیشینه و نصف ارتفاع بیشینه"
یک خط از "نصف درازای بیشینه و 0" به "نصف درازای بیشینه و ارتفاع بیشینه"

pouria2013
پنج شنبه 14 شهریور 1392, 15:20 عصر
از این نظر فقط می خواستم وسط پیدا بشه
برای کشیدن + از کد زیر استفاده کردم

Program Grap;
uses graph;
var
Gd,gm,i,a:integer;
Begin
InitGraph(gd,gm,'d:\bp\bgi');
SetColor(14);
SetBkcolor(1);
line(20,240,620,240);
line(320,450,320,20);
outtextxy(619,237,'>');
outtextxy(317,16 ,'^');
Readln;
CloseGraph;
end.