PDA

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



poorya.coolboy
پنج شنبه 05 آذر 1388, 23:38 عصر
سلام دوستان به برنامه داشتم میخواستم ببینم کی میتونه کمکم کنه اینو استادم گفته هرکاری میکنم نمیشه ممنون میشم یکی کمک کنه موضوع و سوال مساله اینه :
برنامه ای بنویسید ماتریس زیر (عکس) را چاپ کرده سپس 3 عدد a , b , c را بگیرد. سپس حلقه ی اول .(a) خانه به صورت ساعتگر بچرخاند . حلقه ی دوم را(b) و خانه پادساعتگر بچرخد و حلقه ی سوم (C) خانه ساعتگر بچرخد.
به شکل زیر :

http://img4.tinypic.info/files/cmc6ww6ksew57r3a8aex.jpg

Nima_NF
جمعه 06 آذر 1388, 11:08 صبح
همانطور که می دانید پرسیدن تمرینات دانشجویی در فروم ممنوع هست و تنها در خواست کمک در بخش هایی از برنامه که مشکل دارید مجاز هست.

لذا راهنمایی:
اگر به شما الگوریتم خاصی تدریس دادخ نشده است راحت ترین روش استفاده از دستور gotoxy هست، و اگر از کامپایلرهای جدید استفاده می کنید، معادل این تابع را پیاده سازی کنید (در تاپیک اعلان برنامه نویسی گرافیک) لینک قرار داده شده است.

یک جعبه فرض کنید و سپس با gotoxy یک واحد یک واحد در طول هر ضلع به جلو بروید و عدد ها را رسم کنید (با حلقه For از 1 تا 6 و یا برعکس، یا حتی برای ساده شدن، کل یک ردیف چرخشی را در یک آرایه یک بعدی ذخیره کنید تا راحت تر بتوانید یک واحد به جلو یا عقب بروید.)

tdkhakpur
جمعه 06 آذر 1388, 13:59 عصر
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <dos.h>
//-------------------------------------
int MoveMap [6*6];
int FindMoveMap(int level)
{
int row=level, col=level;
int way[]={ 1, 0, 0, 1, -1, 0, 0, -1};
int c=0;
for( int i=0; i<4; i++ )
for( int j=level; j<(6-level-1); j++ )
{
MoveMap[c++] = row*6+col;
col += way[i*2+0];
row += way[i*2+1];
}
return c;
}
//-------------------------------------
void ChnageMatrix (int *movemap, int count, int *matrix)
{
int tmp, CurIndex, PrevIndex;
CurIndex = movemap[count-1];
tmp = matrix[CurIndex];
for(int j=count-1; j>0; j-- ){
CurIndex = movemap[ j ];
PrevIndex = movemap[ j-1 ];
matrix [ CurIndex ] = matrix [ PrevIndex ];
}
CurIndex = movemap[0];
matrix [CurIndex] = tmp;
}
//-------------------------------------
void Put2Screen(int x, int y, char *str, int *matrix)
{
gotoxy(x, y);
cout<<str;
for( int j=0; j<6; j++){
gotoxy(x, y+j+1);
for( int i=0; i<6; i++)
cout<<" "<<matrix[j*6+i];
}
}
//-------------------------------------
int main()
{
int Matrix [6*6] ={
1, 3, 4, 5, 7, 6,
3, 1, 2, 5, 1, 9,
5, 1, 4, 2, 3, 7,
8, 2, 4, 9, 1, 6,
2, 9, 3, 5, 7, 9,
1, 3, 9, 8, 7, 6
};
int count, x=10, y=10, RotateCount[3];
clrscr();
cout<<"\n tdkhakpur..";
cout<<"\nenter a >"; cin>>RotateCount[0];
cout<<"\nenter b >"; cin>>RotateCount[1];
cout<<"\nenter c >"; cin>>RotateCount[2];
// put befor changed matrix in screen
Put2Screen(x, y, "befor change..", Matrix );
for( int i=0; i<(6/2+6%2); i++ )
for( int j=0; j<RotateCount[i]; j++ )
{
count = FindMoveMap(i) ;
if( count>0 )
ChnageMatrix (MoveMap, count, Matrix );
delay(1000);
Put2Screen(x+30, y, "changed matrix..", Matrix );
}
cout<<"\n";
return 0;
}

#Elahe#
جمعه 06 آذر 1388, 15:03 عصر
MoveMap[C++‎] = row*6+col;


به اینجا گیر میده !
مشکل چیه ؟

tdkhakpur
جمعه 06 آذر 1388, 17:25 عصر
MoveMap[C++‎‎] = row*6+col;


به اینجا گیر میده !
مشکل چیه ؟
برای چی ? چه پیغامی میده؟

a.gh.n
جمعه 06 آذر 1388, 17:39 عصر
MoveMap[C++‎] = row*6+col;


به اینجا گیر میده !
مشکل چیه ؟
اون یه خط رو خودتون تایپ کنید احتمالا درست شه.
ظاهرا نیم فاصله خورده...