تخفیف های داغ در جشنواره تابستانه توسینسو تخفیف های داغ در جشنواره تابستانه توسینسو
مانده تا پایان تخفیف
مشاهده دوره ها
0

تحلیل کدهای برنامه جاوا

سلام ، ممنون میشم اگه کسی میدونه عملکرد این نرم افزار به چه شکلیه راهنمایی کنه , اگه خط به خط راهنمایی بشه که عالی میشه .

سلام ، ممنون میشم اگه کسی میدونه عملکرد این نرم افزار به چه شکلیه راهنمایی کنه , اگه خط به خط راهنمایی بشه که عالی میشه .

<center>
||http://tosinso.com/files/get/8b830c9d-38df-4a73-96a9-dd8cb42c36b3||
<center>

پرسیده شده در 1394/08/20 توسط

1 پاسخ

1

یا برنامه اشتباهه یا کار بی معنایی انجام میده. اسم برنامه که میگه منظورش اینه که میخواد یک رشته رو معکوس کنه اما در عمل این کار رو انجام نمیده.

فرض کنید رشته ما حروف الفبای انگلیسی از A تا z باشه :

str="ABCD.....vwxyz"

پس طول رشته ما برابر خواهد بود با 31.

str.length=31

حلقه for اندیس j رو ابتدای رشته و اندیس i رو در انتهای رشته قرار میده و طبق تعریف جلوی for گویا میخواد بعد از هر بار چرخش i و j یکی کم بشه و یکی هم زیاد بشه تا به هم برسن اما در عمل در چرخه for این اتفاق نمیفته.

خوب توی دو سطر اول حلقه یک متغیر از نوع کاراکتر ایجاد میشه با نام temp که همیشه کارش اینه که مقدار j هرچی بود اون اندیس رشته رو بریزه داخلش. در عمل غیر از چرخش اول حلقه که j=0 هست تا پایان حلقه j مقدارش 1 باقی میمونه. چه جوری؟ بار اول که مشخصه j برابر 0 هست پس توی شرط if صدق نمیکنه میره توی else . بار دوم که حلقه چرخشش شروع میشه طبق ++j ، مقدار j میشه 1. از طرفی وقتی به if میرسه خوب 1 از 0 بزرگتره و طول رشته هرچی که باشه باقیماندش بر 1 برابر با 0 میشه . یعنی هر دو شرط if برای زمانی که j=1 هست صدق میکنه. پس میره که کد داخل if رو اجرا کنه. کد داخل if قبل از هر کاری از مقدار j یکی کم میکنه (j--) پس j=0 میشه. حالا دیگه تا آخر این چرخش مقدار j تغییر نمیکنه تا چرخش سوم شروع میشه و باز به j یکی اضافه میشه و j=1 میشه باز میاد توی if صدق میکنه باز j=0 میشه و باز میره توی شروع for مقدارش میشه 1 و ... همینطور تا آخر همیشه در شروع حلقه مقدار j=1 هست غیر از بار اول.

خوب حالا ببینیم با این روند چیکار میخواد بکنه:

چرخش اول حلقه: حرف ماقبل آخر رشته میره جای حرف اول رشته میشینه و حرف اول رشته که قبلا اون رو توی یک temp نگهش داشتیم میره جای حرف آخر جایگزین میشه. پس در مثال ما بعد از یک بار چرخش چاپ میشه:

k=1  ybcd....vwxya

چرخش دوم حلقه: شرط صدق میکنه میره کد داخل if رو اجرا میکنه سوم از آخر رشته رو میذاره جای حرف اول رشته و حرف دوم رشته رو که توی temp نگه داشته بود میذاره جایگزین حرف دوم از آخر رشته:

k=2   xbcd....vwxba

و تا اخر کار حلقه میشه اینکه حرف i-1 از آخر رشته رو برمیداره میذاره جای حرف اول رشته و حرف دوم رشته رو که همیشه تا آخر ثابت میمونه (توی مثال ما حرف b) ، میذاره جای حرف i ام رشته:

<c#>
k=3   wbcd....uvwbba
K=4   vbcd....uvbbba
K=5   ubcd...tubbbba
...
....
...
k=30  cbbbb...bbbbba
<c#>
پاسخ در 1394/08/21 توسط

پاسخ شما