درخواست الگوریتم برنامه ++c

ahadi

New Member
سلام به همه دوستان
الگوریتمی می خواستم که درآن از حلقه های تو در تو استفاده شده باشد
دلیل آن ذکر شده باشد
با تشکر از همه​
 

oldooz

Well-Known Member
قصدتون اینه که حلقه های تودر تو رو با مثال بفهمید یا الگوریتم خاصی میخواید؟
.
مثلا برای پردازش آرایه 2-بعدی از دوحلقه، 3-بعدی سه حلقه و در حالت کلی در n-بعدی از n حلقه تودرتو استفاده میکنیم.
این فقط یک کاربردش بود.
PHP:
int sum=0;
for(int i=0;i<x;i++)
{
for(int j=0;j<y;j++)
{
sum+=array[i,j];
}
}
دراینجا ابتدا کل سطر 1، سپس سطر 2 و... سطر x ام پردازش میشه. برای هر مقدار i(شماره سطر) j از 0 تا y تغییر میکنه(این یعنی اینکه تمام سطر i ام پردازش میشه.
سوالی بود در خدمتیم.
موفق باشید
 

the_king

مدیرکل انجمن
سلام به همه دوستان
الگوریتمی می خواستم که درآن از حلقه های تو در تو استفاده شده باشد
دلیل آن ذکر شده باشد
با تشکر از همه​

به عنوان یک مثال ساده مجموع ارقام درایه های یک ماتریس (آرایه دو بعدی) را در نظر بگیرید.
هر درایه دو مولفه x و y (یا i و j) دارد که سطر و ستون آنرا مشخص می کنند. فرض کنیم که
ابعاد ماتریس n در n باشد، مثلا 10 در 10. برای آنکه بتوانیم کدی بنویسیم که تمامی درایه های این
ماتریس را جمع بزند بایستی از حلقه هایی استفاده کنیم که مقدار x و y را مشخص کند.

طبیعتا به دو حلقه نیاز داریم، یکی برای x و یکی برای y :
کد:
for (x = 0; x < 10; x++)

کد:
for (y = 0; y < 10; y++)

اگر ابعاد ماتریس ما 10 در 10 باشد بایستی 100 درایه را جمع بزنیم، پس بایستی این دو حلقه تو در تو
باشند، چون اگر تو در تو نباشند، اولی 10 بار اجرا می شود و سپس دومی هم 10 بار و در مجموع فقط 20 بار.
اما اگر تو در تو باشند هر بار که حلقه اول اجرا می شود، حلقه داخلش اش 10 بار اجرا می گردد، یعنی در مجموع
10 * 10 بار، که همان 100 بار مورد نظر ما است.

کد:
int x, y, sum = 0;
for (x = 0; x < 10; x++)
      for (y = 0; y < 10; y++)
	sum += A[x][y];
 

جدیدترین ارسال ها

بالا