PDA

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



a30sharp
سه شنبه 05 دی 1391, 22:16 عصر
سلام من یک برنامه با پاسکال میخواهم بنویسم که اعداد سه رقمی که با 0و1و2و3و4و5 را بسازد؟
با تکرار و بدون تکرار...

حالا من اعداد را در اوردم اما برنامه با حلقه for نوشتم و اعداد را توی حلقه گذاشتم :


begin
for d:=110 to 115 do
writeln(d);
for e:=120 to 125 do
writeln(e);
for f:=130 to 135 do
writeln(f);
for a:=140 to 145 do
writeln(a);
for q:=150 to 155 do
writeln(q);
for w:=200 to 205 do
writeln(w);
for r:=210 to 215 do
writeln(r);
for t:=220 to 225 do
writeln(t);
for y:=230 to 235 do
writeln(y);
for u:=240 to 245 do
writeln(u);
for o:=250 to 255 do
writeln(o);
for p:=300 to 305 do
writeln(p);
for s:=310 to 315 do
writeln(s);
for g:=320 to 325 do
writeln(g);
for qw:=330 to 335 do
writeln(qw);
for qe:=340 to 345 do
writeln(qe);
for qr:=350 to 355 do
writeln(qe);
for qt:=400 to 405 do
writeln(qt);
for qy:=410 to 415 do
writeln(qy);
for qu:=420 to 425 do
writeln(qu);
for qi:=430 to 435 do
writeln(qi);
for qo:=440 to 445 do
writeln(qo);
for qp:=450 to 455 do
writeln(qp);
for qa:=500 to 505 do
writeln(qa);
for qs:=510 to 515 do
writeln(qs);
for qd:=520 to 525 do
writeln(qd);
for qf:=530 to 535 do
writeln(qf);
for qg:=540 to 545 do
writeln(qg);
for qh:=550 to 555 do
writeln(qh);
readln;
end.


خوب حالا این برنامه درست هست ؟؟؟؟

ایده دیگه ای ندارید دوستان می خواهم کامل این زبان برنامه نویسی را بفهمم یعنی با چند روش این برنامه را بنویسم..

یک روش دیگه هم توی ذهنم هست که توی حلقه بگم اعداد بین بخش پذیر بر 5 را چاپ کنه که همین جواب را می ده اما خوب این را دیگه نمی دونم که چطور حلقه برای این بنویسم ...

لطفا ایده با روش شفاف باشه؟؟؟؟

یوسف زالی
سه شنبه 05 دی 1391, 23:11 عصر
سلام.
این روش اصلا اسمش روش نیست.
این بار به خاطر این که تلاش کردید کامل راهنمایی می کنم و توضیح می دم. توصیه می کنم درباره این که الگوریتم چیست کمی مطالعه کنید.
شما اعداد سه رقمی مرکب از اون اعداد می خواید.
اعداد سه رقمی با صفر شروع نمی شن.
اعداد سه رقمی سه رقم دارن! تعجب نکن. قصد مزاح ندارم. تقریبا هر الگوریتمی هر چقدر هم پیچیده باشه از سنگ های بنایی به همین سادگی تشکیل می شه.
خوب، حالا وقتی می گن برنامه بنویس منظورشون این نیست که خروجی رو بنویس.
باید با کمترین هزینه بیشترین ارزش رو بگیریم.
در اینجا هزینه خطوط برنامه هست.
ارزش هم خروجی.
شما احتمالا باید دستور For رو خونده باشید.
در حلقه های تو در تو یادتون باشه که همیشه داخلی ترین حلقه سریع تر چرخ می زنه و ریست میشه.
خوب، سه رقم داری.
رقم اول از 1 تا 5.
رقم دوم از 0 تا 5.
رقم سوم از 0 تا 5.
حلقه هات رو تشکیل می دی به این صورت:

برای a از 1 تا 5 این کار ها رو کن:
--برای b از 0 تا 5 این کار ها رو کن:
----برای c از 0 تا 5 این کار ها رو کن:
------بنویس a*100 + b*10 + c

موفق باشی.

me.enik
چهارشنبه 06 دی 1391, 22:04 عصر
you-see کاملا درست میگه. این روش را به هیچ عنوان نمیشود استفاده کرد.
حالا شما فکر کنید سوال به جای اعداد 0 و 1 و 2 و 3 و 4 و 5, اعداد 0 تا 9 بودش. اون وقت باز میخواهید که چندین تا فور اضافه کنید؟
البته بگم که این چیزا در اثر زمان خود به خود درست میشه, خیلی نگرانش نباش!

روشی که you-see عزیز گفتند روش خوبی هستش. هم سریع هست و هم جواب میده.
امتحان کن و اگر مشکلی بود در همین تاپیک اعلام کن.

a30sharp
دوشنبه 11 دی 1391, 18:38 عصر
مرسی از دوستان اما من این دستور را اجرا می کنم فقط ۵۵۵ را خروجی میده

program test;
var
a,b,c,s,f,d:integer;
begin
for a:=1 to 5 do
for b:=0 to 5 do
for c:=0 to 5 do
d:=a*100+b*10+c;
writeln(d);
readln;
end.
به صورت زیر هم نوشتم خروجی ۵۰۰ و ۵۵۰ ۵۵۵ شد ....
program test;
var
a,b,c,s,f,d:integer;
begin
for a:=1 to 5 do
s:=a*100+b*10+c;
for b:=0 to 5 do
f:=a*100+b*10+c;
for c:=0 to 5 do
d:=a*100+b*10+c;
writeln(s,f,d);
readln;
end.