PDA

View Full Version : سوال: چگونه در ماترس n*n حلزونی حرکت کنیم؟



mohammaddx
جمعه 15 خرداد 1394, 12:39 عصر
با سلام به همه ی دوستان.این تعریف پروژه دانشگاهمون است.از همه ی دوستان خواهش میکنم ایده خودشون را بدن تا من کدش را با c++ بنویسم.مشکل اصلی هم همین حرکت حلزونیی است!
*************
ماتريسي 5 ×5 در نظر گرفته و با 25 عدد به آن مقدار مي دهيم . يك حلزون از خانه )0،0( ماتريس شروع كرده و به صورتحلزوني ماتريس را دور مي زند تا به دروني ترين نقطه ماتريس برسد. حلزون در اين راه هر خانه كه جلو مي رود، عددها راجمع مي . كند هرگاه اين مجموع، مربع كامل بود، براي او حكم يك امتياز دارد كه در خروجي برنامه مجموع اين امتيازها را چاپمي نمايد . برنامه را بصورتي بنويسيد كه به راحتي بتوان براي هر ماتريس با هر بعد تبديل نمود
**************

chikar
جمعه 15 خرداد 1394, 22:51 عصر
واقعا به برخی استادها نمی دونم چی بگم، دانشجوی ایرانی رو اصلا از درس نه تنها زده می کنند، بلکه منحرف می کنند، آخه مرد حسابی این سوال مسخره چیه، کجاش دانشجو با این مثال به برنامه نویسی علاقه مند می شه و یا یاد می گیره!!
برخی اساتید ایرانی اطلاعاتشون مال عهد دقیانوس هست، بابا شی گرایی اومده، کلاس های آماده اومده، محیط های ویژوال اومده، بفهمید، دنیای برنامه نویسی تغییر کرده
اما بریم سر سوال :

1 2 3 4 5
2 1 2 3 6
3 8 0 4 7
4 7 6 5 8
5 6 7 8 9


از نقطه صفر و صفر یعنی 1 شروع کنید و به این ترتیب جلو برید یعنی 1234567898765432123456780، در آخر به درون ترین خانه یعنی 0 می رسید، در این راه باید هر بار هر خانه با خانه بعدی خود جمع شود، مثلا اگر درست متوجه شده باشم یک و دو با هم جمع می شن و می شه 3، بعد سه با سه جمع می شه و ....
برای این کار هم باید از حلقه های تو در تو for استفاده کنید، که کمی پیچیده است
موفق باشید

mohammaddx
جمعه 15 خرداد 1394, 23:19 عصر
واقعا به برخی استادها نمی دونم چی بگم، دانشجوی ایرانی رو اصلا از درس نه تنها زده می کنند، بلکه منحرف می کنند، آخه مرد حسابی این سوال مسخره چیه، کجاش دانشجو با این مثال به برنامه نویسی علاقه مند می شه و یا یاد می گیره!!
برخی اساتید ایرانی اطلاعاتشون مال عهد دقیانوس هست، بابا شی گرایی اومده، کلاس های آماده اومده، محیط های ویژوال اومده، بفهمید، دنیای برنامه نویسی تغییر کرده

جالب این جاست این سوال برای یه دانشجویه رشته فیزیک جامد بوده که اورده برای من که رشته ام نرم افزار حل کنم!

****************
شما هم که فقط صورت سوال را تشریح کردید!برای همون حلقه های تو در تو نیاز به ایده دارم!

pbm_soy
شنبه 16 خرداد 1394, 02:19 صبح
نمیدونم اینجا من چی بنویسم!
قاعدتا این یک تمرین و پروژه درس برنامه سازی است!
و بله توسط تمرینات اینچنینی برنامه نویسان قدیم و فعلی و آینده ، برنامه نویس میشوند!
در کل میخوام بگم که این تمرین کلاسیک درس برنامه نویسی است!

اینم کد برنامه


#include <stdio.h>
#define R 3
#define C 6

void print_movement(int m, int n, int a[R][C])
{
int i, k = 0, l = 0;

/* k - starting row index
m - ending row index
l - starting column index
n - ending column index
i - iterator
*/

while (k < m && l < n)
{
/* Print the first row from the remaining rows */
for (i = l; i < n; ++i)
{
printf("%d ", a[k][i]);
}
k++;

/* Print the last column from the remaining columns */
for (i = k; i < m; ++i)
{
printf("%d ", a[i][n-1]);
}
n--;

/* Print the last row from the remaining rows */
if ( k < m)
{
for (i = n-1; i >= l; --i)
{
printf("%d ", a[m-1][i]);
}
m--;
}

/* Print the first column from the remaining columns */
if (l < n)
{
for (i = m-1; i >= k; --i)
{
printf("%d ", a[i][l]);
}
l++;
}
}
}

/*============ main =================*/
void main()
{
/*=== init matrix ============*/
int a[R][C] = { {1, 2, 3, 4, 5, 6},
{7, 8, 9, 10, 11, 12},
{13, 14, 15, 16, 17, 18}
};

print_movement(R, C, a);

}

pbm_soy
شنبه 16 خرداد 1394, 02:20 صبح
این هم یه جور دیگش

#include <iostream>

using namespace std;

void main()
{
int map[4][4]= {
1, 2, 3, 4,
5, 6, 7, 8,
9, 10, 11, 12,
13, 14, 15, 16
};
bool flag=false;
for(int i=0; i<4; i++)
{
for(int j=0; j<4; j++)
{
if(flag)
cout << map[i][3-j]<<" ";
else
cout << map[i][j]<<" ";
}//for(j)
if(flag)
flag=false;
else
flag=true;
}//for(i)
cout << endl;
}//main

pbm_soy
شنبه 16 خرداد 1394, 02:40 صبح
در لینک زیر این برنامه برنامه با 50 یا 60 زبان برنامه نویسی مختلف نوشتن از انواع C و Java و انواع Basic و perl , Python , TCL , غیره و حتی Assembly

http://rosettacode.org/wiki/Spiral_matrix

ehsan_faal
شنبه 16 خرداد 1394, 12:15 عصر
ام فایل متلب همین ماتریس حلزونی رو ببینید روند طی کردن این ماتریس رو گفته.