ورود

نسخه کامل مشاهده نسخه کامل : کمک کنید خیلی ضروریه برام(کد حرکت یک مربع در یک فضای داده شده) خود برنامه به صورت exe هست



behzadfc
08-11-2013, 10:27
اقایون خانوم ها لطفا کمک کنید...این برنامه رو هر چی سعی کردم بنویسم نشد!!!
فایل رو به صورت exe قرار دادم(فایل اصلی ) ولی کدش رو نمیدونم...لطفا کمک!!!
لینک فایل:[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

shadows_funeral
08-11-2013, 21:00
اقایون خانوم ها لطفا کمک کنید...این برنامه رو هر چی سعی کردم بنویسم نشد!!!
فایل رو به صورت exe قرار دادم(فایل اصلی ) ولی کدش رو نمیدونم...لطفا کمک!!!
لینک فایل:[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

انجام این پروزه که کاری نداره اما اینطوری که نمی شه ، هر کسی بیاد بگه پروژه مد نظرم رو بنویسید!!! شما اگه آشنایی با c++ یا c دارید، کدی رو که خودتون نوشتین بذارید تا راهنمایی کنم چه جاهاییش مشکل داره.
اگه هم که اصلا آشنایی ندارین بگین تا بهتون منابع جهت یادگیری معرفی کنم.

behzadfc
13-11-2013, 08:23
اخه برای ایجاد قاب دورش هر چی باgotoxyکار میکنم جواب نمیده.الان بیشتر مشکل قابشه وگرنه اون برنامه حرکتش کاری نداره.

rahnema1
13-11-2013, 22:14
دوست عزیز کدهاتون البته اونجایی که مشکل داره رو اینجا بذارید ببینیم چه مشکلی داره

shadows_funeral
15-11-2013, 22:04
اخه برای ایجاد قاب دورش هر چی باgotoxyکار میکنم جواب نمیده.الان بیشتر مشکل قابشه وگرنه اون برنامه حرکتش کاری نداره.
دقیقا یعنی چی جواب نمی ده؟ ارور می ده یا اینکه درست شکل در نمیاد؟ اگه کدتون رو بذارید بهتر می شه راهنماییتون کرد. ممنون

behzadfc
21-11-2013, 12:22
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
void main()
{textmode(64);
clrscr(); int n,t=0,w=0,e=0,d=0,f=0,b=2;cin>>n;
int q=n/2;n=2*q;
gotoxy(40-q,25-q);
for(int i=0;i<n;i++)
{ for(int j=0;j<n;j++)
{
if(i==0)
{cout<<"+";
}
if(j==0)
{gotoxy(40-q,25-q+t);cout<<"+";t++;}


if(j==n-1)
{gotoxy(40-q+e,25-q+n-1);

cout<<"+"; e++;cout<<"\n";
}
if(i==n-1)
{gotoxy(40-q+n-1,25-q+w);
cout<<"+";w++;}

}
cout<<"\n";
}

gotoxy(40-q+1,25-q+1);
for(i=0;i<2;i++)
{for(int j=0;j<2;j++)
cout<<"*";cout<<"\n";gotoxy(40-q+1,25-q+2);
}




while(1)
{ int c=getch();int m=0,x=40-q+1-d,y=25-q+1-f;

if(c==62) {clrscr();b++;m=1;
if(b>=n-2) b=n-2;}
if(c==63) {clrscr();b--;m=1;
if(b<=1) b=1;}
if(c==77) {clrscr();
d--;m=1;
if(x==40-q+n) d=n-2;

}
if(c==75) {clrscr();d++;m=1;
if(x==40-q) d=0;

}
if(c==72) {clrscr();f++;m=1;}
if(c==80) {clrscr();f--;m=1;}
if(m==1)
{t=0;e=0;w=0;
gotoxy(40-q,25-q);
for(int i=0;i<n;i++)
{ for(int j=0;j<n;j++)
{
if(i==0)
{cout<<"+";
}
if(j==0)
{gotoxy(40-q,25-q+t);cout<<"+";t++;}


if(j==n-1)
{gotoxy(40-q+e,25-q+n-1);

cout<<"+"; e++;cout<<"\n";
}
if(i==n-1)
{gotoxy(40-q+n-1,25-q+w);
cout<<"+";w++;}

}
cout<<"\n";
}
int s=2;
gotoxy(x,y);
for(i=0;i<b;i++)
{for(int j=0;j<b;j++)
cout<<"*";cout<<"\n";gotoxy(x,y+s-1);s++;
}
}


if(c==27) break;
}
}



اقا اینم از برنامه فقط به یه مشکل برخورد کردم اونم اینکه موقعی که از طرف راست میره بیرون از طرف چپ نمیاد تو (دقیقا به اندازه کادر) و همین مسئله برای بالا و پایین هم هست...اصن دیوانم کرده...فردا هم باید برای استاد بفرستم....
اگه صلاح میدونین کمک کنین...
:n30: [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

rahnema1
22-11-2013, 03:45
این رو ببینید چه طوریه؟ چیزی رو تغییر ندهید فقط متغیرهای mabdax و mabday که مختصات گوشه بالا سمت چپ حاشیه هستند را مطابق نظرتان تغییر دهید
همچنین n هم سایز حاشیه و b هم ساز مستطیل داخلی هست فرض من اینه که gotoxy مبدا مختصاتش 1و 1 است اگه صفر وصفر بود یه کم تغییر لازم داره

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

behzadfc
22-11-2013, 08:36
متاسفانه فقط مجاز به استفاده از توابعgotoxy ,while هستیم بقیه رو مثل swiitchو اینا رو نمیشه وارد کرد.اگه لطف کنید بگید من دستور خودم رو چه تغییری بدم ممنون میشم!!!

rahnema1
22-11-2013, 19:32
این یکی چه طوریه؟
در برنامه خودتون باید تمام if ها و for ها رو تبدیل به while کنید همچنین اگه می خواهید از محدوده خارج نشه از عملگر باقیمانده استفاده کنید

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

behzadfc
25-11-2013, 20:34
تبدیل کردم اصن یه چیز عجیب غریبی در اومد(به جای forوif ،whileگذاشتم اصن یه چی داغونی شد!!!میشه خودتون بگید دقیقا کدومارو تغییر بدم؟!!!)
درضمن این برنامه شمارم موقعی که مقدار کوچیک یا بزرگ شدن میذارم جواب نمیده!!!:n30:![ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]![ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]![ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]![ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]![ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]![ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

rahnema1
25-11-2013, 22:37
کد شما تا جای خوبی پیش رفته اما فکر کنم چون یک مقدار ناخوانا هست باعث میشه هنگام تحلیلش دچار مشکل بشیم بنابراین ترجیح می دهم بیشتر در خصوص کد خودم توضیح بدم چون به اون مسلط ترم
حالا چند نکته هست فکر کنم باید روشن بشه
چون گفتید از شما خواسته اند فقط while استفاده بشه لازمه نحوه تبدیل if و for را به while توضیح بدم
اگه دستور if اینجوری باشه:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
معادل while آن اینجوری میشه:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگه دستور for اینجوری باشه:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
معادل while آن اینجوری میشه:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

یک توضیح هم در مورد کد که اصلاحش کردم اون اشکال رفع شد
ما در اینجا دو تا سیستم مختصات داریم یکی مربوط به صفحه نمایش ویکی هم سیستم مختصاتی که داخل اون محدوده هست
مختصات * ها همون محدوده + ها هاست که باید برای چاپ تبدیل به مختصات نمایش بشه . متغیرهای xو y مختصات گوشه بالا سمت چپ مستطیل توپر هستند که بر اساس مختصات محدوده بدست می آیند و وقتی کلیدهای جهتی زده می شوند مختصات آنها کم و زیاد میشه و وقتی که به محدوده ها می رسند با استفاده از شرط مقدار اون رو به صفر یا آنطرف محدوده تغییر می دهیم
تا اینجاش مشکلی نیست اما غیر از ستاره گوشه بالا سمت چپ سایر ستاره ها چه باید بکنند؟
ما یک عملگر داریم به نام باقیمانده یا % که وقتی هر عدد راتقسیم بر اندازه محدوده می کنیم و باقیمانده اون رو بدست بیاوریم جوابش همین میشه که می بینیم یعنی باقیمانده تقسیم هر عدد بر n هیچ وقت از n بیشتر نمیشه یعنی اگه مثلا n برابر با 10 باشه و اعداد صفر تا صد رو تقسیم بر اون کنیم جواب باقیمانده آن مرتبا از صفر تا 10 تکرار میشه یعنی همون چیزی که ما دنبالش هستیم
برای تبدیل مختصات داخل محدوده به مختصات صفحه نمایش اولا دو متغیر داریم به نام mabdax , mabday که مختصات گوشه محدوده را در مبنای صفحه نمایش نشان می دهند که باید آنها را به اضافه 1 کنیم چون از علامت + یک خانه پایین تر بیایم و نهایتا اون را تقسیم بر اندازه داخل محدوده کرده باقیمانده آن را بدست می آوریم تا از باقیمانده جهت مختصات ستاره ها استفاده شود

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

behzadfc
26-11-2013, 14:42
با تشکر از شما
من یه سزی توضیحات بدم...اول اینک همنظورم کدهایی مثل while و gotoxy بود...نه دقیقا خود اونها چون من مبانی کامپیوتر رشته it رو میخونم و هنوز اجازاه استفاده از تابع و یا چیزهایی از این قبیل رو نداریم...فقط از متغیرهایی که در برنامه من استفاده شده میشه استفاده کرد...(هنوز در ابتدای راهیم!!!)
بعدم اگه امکان داره دلیل ناخوانا بودن برنامم رو بگید تا اگه بشه براتون توضیح بدم تا روی برنامه خودم اشکالاتم برطرف شه...مطمئنا اینجوری بهتر یاد میگیرم
باتشکر از زحمات شما راهنمای گرامی!!!

rahnema1
26-11-2013, 15:02
متغیرهایی که تعریف کردید زیاد و نامهای آنها بی معنی است لطفا کد را مرتب کنید و کدهایی که با هم مرتبطند نزدیک به هم و بصورت جمع و جور در یک گروه قرار دهید نام متغیر را با توجه به کاربرد آن قرار دهید من هم از اول می خواستم بگویم در مورد کد خودتون توضیح بدهید شاید گره کار باز بشه

behzadfc
09-12-2013, 09:31
خوب اینم از کل مسئله که حل شد،البته هفته پیش حل شد ولی سرم شلوغ بود نتونستم بذارم.با تشکر از راهنمای عزیز!!!


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

rahnema1
09-12-2013, 11:42
مرسی آفرین موفق باشید