PDA

View Full Version : الگوريتم مثلث



aminkk
یک شنبه 09 فروردین 1388, 23:00 عصر
سلام

براي داشتن خروجي زير چگونه بايد عمل كرد؟

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

در اصل به اين مي گن مثلثي. اما نمي دونم چي جوري بايد حلش كرد.


مي دونم كه بايد از حلقه هاي تودرتو استفاده كرد. يك حلقه كه i اسمش رو مي ذارم براي پيمايش ارتفاع كه 5 تا بايد باشه چون 5 سطر داريم:



For i = 1 To 5
loops
Next i


اما اين وسط رو نمي دونم چي كارش كنم. واقعاً چيزي به ذهنم نمي رسه.
مي شه راهنماييم كنيد؟مخصوصاً مدير بخش جناب whitehat ممنون مي شم.

aminkk
یک شنبه 09 فروردین 1388, 23:04 عصر
اگه دوستان راهنمايي كنن ممنون ميشم.

xxxxx_xxxxx
دوشنبه 10 فروردین 1388, 09:05 صبح
سلام
اگر به ويژگي هاي مثلث دقت كنيد و اونها رو پيدا كنيد كارتون راحت تر ميشه.
مثلاً اين كه عدد شروع كنند هر سطر يك واحد از سطر قبليش بيشتره و ميتونه همون شماره سطر باشه.
و مهم تر اين كه اعداد در هر سطر به طول عدد شروع كننده افزايش پيدا مي كنند و دوباره كاهش مي يابند تا به عدد اول برسند.
بنابراين يك حلقه مي خوايم براي ايجاد هر سطر به طول تعداد سطرها
و دوتا حلقه براي اعداد در هر سطر مي خوايم كه يكي براي پيشروي و يكي براي كاهش.
فكر كنم شما VB كار مي كنيد. اين كد VB هست، البته به صورت مثلث قائم الزاويه چاپ ميشه كه با يك حلقه ديگه ميشه تورفتگي بهش داد تا بشه همون مثلث موردنظر.




For i = 0 To 4
For j = 1 To i + 1
Print i + j;
Next j
For j = i To 1 Step -1
Print i + j;
Next j
Print
Next i

موفق باشيد/

misagh1359
دوشنبه 10 فروردین 1388, 23:50 عصر
اینم کد #C


for (int i = 1; i < 5; i++)
{
int k = i;
for (int h = i; h < 6; h++)
Console.Write("\t");
for (int j = 0; j < i; j++)
{
Console.Write(k.ToString()+"\t");
k++;
}
k--;
for (int j = 1; j < i; j++)
{
k--;
Console.Write(k.ToString()+"\t");

}
Console.WriteLine();
}

aminkk
سه شنبه 11 فروردین 1388, 13:39 عصر
متشكر از همه شما
من اين طور نتيجه گرفتم كه ساختارش به اين صورت هستش:


For i = .....
For k = ....

Next K

For j = ....

Next j
next i


يكي از حلقه ها تورفتگي از سمت چپ رو پيمايش مي كنه كه حالت كاهشي داره و حلقه دومي تو رفتگي رو از سمت چپ به راست پيمايش مي كنه كه حالت افزايشي داره.

بازم سوال مي كنم. ممنون