ماراتن ترکیبیات (کاربردی در کامپیوتر)

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#1
سلام
این هم لازم حس می شد! درست مثل ماراتنهای هندسه،ترکیبیات،جبر و تئوری اعداد.

قوانین:
1- شماره سوالی را که در مورد آن مطلب می نویسید بالای مطالب درج کنید.
2- تا زمانی که سوال حل نشده باقی مانده است ، سوال دیگری نگذارید.
3- با حروف الفبای فارسی بنویسید (فینگلیش ممنوع است)
4- آذری ، لری ، کردی ، مشدی یا با هر لهجه و زبان دیگری ننویسید!!

از آسان شروع می کنم.

[center:d5ad0c1478]
[/center:d5ad0c1478]
سوال اول:
مطلوبست تعیین مقدار متغیر صحیح counter پس از اجرای قطعه برنامه ی پاسکال زیر. (در این جا i و j و k متغیر هایی صحیح هستند)



;counter:=0
For i := 1 to 12 do
;counter:=counter+1
For j:=5 to 10 do
;counter:=counter+2
For k := 15 downto 8 do
;counter:= counter+3

 

mohammad_72

New Member
ارسال ها
302
لایک ها
5
امتیاز
0
#2
متغیر counter تو حلقه ی اول 12 بار یکی زیاد میشه.
تو حلقه ی دوم 6 بار 2 تا زیاد میشه.
تو حلقه ی سوم 8 بار 3 تا زیاد میشه.
پس مقدار نهاییش میشه : 48
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#3
آفرین! حالا یک درجه بالاتر می بریمش:
[center:bc0f152c8d]
[/center:bc0f152c8d]
سوال دوم:
الف) حکم Writeln در این برنامه پاسکال چند بار اجرا می شود؟ متغیر ها مثل سوال قبل صحیح هستند.

For i:= 1 to 12 do
For j:= 5 to 10 do
for k := 15 downto 8 do
;(Writeln(i-j*k
ب) مقدار counter را بر حسب n به دست آورید.
;counter :=0
For i:= 1 to n do
For j := 1 to i do
;counter:=counter+1
 

Electron

New Member
ارسال ها
57
لایک ها
0
امتیاز
0
#4
من چيزي از برنامه نويسي نميدونم اما حدسم اينه كه محدود ترين دامنه در نظر گرفته ميشه:
يعني همون6 تايي كه j از 5 به 10 ميرسه
دفعه اول ميشه -4*15
بعد -4*14
-4*13
-4*12
-4*11
-4*10
بعد هم ديگه j بايد 6 بشه كه نميشه ديگه
 

Electron

New Member
ارسال ها
57
لایک ها
0
امتیاز
0
#5
به ازاي اولين i يه دونه j هم تغيير ميكنه
يعني يكي i و يهj!
پس به ازاي اولي 2تا
به همين شكل به ازاي دومي 4تا
به ازاي سومي 9 تا (منظور تا سومين حلقه است)
خب n تا به اين شكله: n^2
درست بود جوابام؟ (حالا جفتش غلط باشه)
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#6
[center:a016a01af8]2[/center:a016a01af8]حدستون درسته ، جفتشون غلط هستند.
شاید چون پاسکال بلد نیستید !
الآن معنی عبارات رو توضیح می دم تا بتونید به راحتی جواب بدهید.
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#7
[center:00717208cf]
[/center:00717208cf]
Goharshady گفت


For i:= 1 to 12 do
For j:= 5 to 10 do
for k := 15 downto 8 do
;(Writeln(i-j*k
خطهای کد را از بالا به پاینن از 1 تا 4 شماره گذاری کنید.
این هم معنی هر خط:
1- i را برابر 1 قرار بده و همه دستورات زیر (تا خط 4) را اجرا کن. بعد یکی به i اضافه کن و همه این دستورات را دو باره اجرا کن و همین کار را ادامه بده تا i برابر 12 شود (خود 12 هم حساب است!)
2-(به ازای هر یک از i های بالا) j را برابر 5 قرار بده و همه کارهای زیر را انجام بده و یکی به j اضافه کن و این کار را تکرار کن تا j برابر 10 شود.
3- k را برابر 15 قرار بده و دستور زیر را اجرا کن و هر بار یکی از k کم کن تا زمانی که k برابر 8 شود (خود 8 هم حساب است!)
4- این عبارت را چاپ کن : i-j*k . (همان دستور writeln)
و سوال این است که چند بار این دستور اجرا می شود.
قسمت ب هم مشابه همین است.
موفق باشید.
فقط یک نکته :
counter:=counter+1 یعنی یکی به متغیر صحیح counter اضافه کن.
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#9
[center:034ce45780]2[/center:034ce45780]قسمت ب درسته می تونستید بنویسید :

اما قسمت الف...
+1 ها برای چی زیاده؟ 12 که +1 نمی خواد!!!!
 

Electron

New Member
ارسال ها
57
لایک ها
0
امتیاز
0
#10
اين شكل براي نوشتن كه گفتيد جالبه اما نميدونستم چيه؟؟؟

قسمت الف هم ويرايش شد... حواسم نبود فكر كردم مثل اين مسائي كه اگه هر دو مرز توي مجموعه باشه يكي اضافه ميشه است...

مرسي
اگه درسته سوال بعد رو بنويسيد
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#11
Electron گفت
اين شكل براي نوشتن كه گفتيد جالبه اما نميدونستم چيه؟؟؟

قسمت الف هم ويرايش شد... حواسم نبود فكر كردم مثل اين مسائي كه اگه هر دو مرز توي مجموعه باشه يكي اضافه ميشه است...

مرسي
اگه درسته سوال بعد رو بنويسيد
این ترکیبه دیگه (یا همون ضریب دو جمله ای)!!
ضمنا من ویرایشی نمی بینم
ولی سوال بعد رو مطرح میکنم.
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#12
سوا سوم

[center:9b68b54931]3[/center:9b68b54931]سوال سوم:
مقدار متغیر sum را پس از اجرای قطعه برنامه ی پاسکال زیر بیابید.

;increment : = 0​
;sum := 0​
For i:=1 to 10 do​
For j:= 1 to i do​
For k := 1 to j do​
Begin​
;increment := increment +1​
;sum:=sum+increment​
;End​
 

Electron

New Member
ارسال ها
57
لایک ها
0
امتیاز
0
#13
خب ما اينجا 10 تا i داريم كه با ازاي هر كدوم 10 تا j هست كه به ازاي هر j بسته به مقدارش همونقدر k هست...​
if j=1 then n(k)=1​
if j=2 then n(k)=2​
.​
.​
.​
if j=10 then n(k)=10​
كه در اين صورت 55 تا هم k داريم...​
حالا تعداد كل عمليات ها ميشه:​
i=1 , j=1 , k=1​
i=1 , j=2 , k=1,2​
.​
.​
.​
كه در هر حلقه ي i بدين صورت 55 تا عمليات داريم كه كلا ميشه 550 تا... يعني ما با حساب كردن تعداد k چون وابسته به j هست ديگه نياز به محاسبه ي جداي j نيست...​
حالا چون هر دفعه مقداري كه به sum اضافه ميشه زياد ميشه sum در كل برابر ميشه با: 1+2+...+550​
كه ميشه دوباره ‍(c(551,2​
(روش جالبيه همين الان حساب كردم)​
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#14
Electron گفت
خب ما اينجا 10 تا i داريم كه با ازاي هر كدوم 10 تا j هست​
این جا یه اشتباه کوچک کردی.
پیغام ها رو چک کن!
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#15
راستی بچه ها
وبلاگ من عوض شد
از blog.co.uk به iranblog نقل مکان کردم!
http://Goharshady.iranblog.com
این جدیده دیگه مثل قدیمیه خصوصی نیست و لازم نیست تو لیست Friends من باشید!
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#16

 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#17
خب، یه نظر سنجی برای فعال کردن دوباره ی این تاپیک.

من موافقم
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#18
فکر کنم از این به بعد به جای پاسکال باید با ++C بنویسیم
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#20
تصویب شد!

رای موافق: 1 (خودم!)
رای ممتنع: 0
رای مخالف: 0
 
بالا