یک سوال برنامه نویسی

جهت طرح ابهامات و مشکلات درسی خود به این بخش مراجعه نمایید

مدیر انجمن: rosa_127

قفل شده
آواتار کاربر
DrXoX
مدیر انجمن
مدیر انجمن
پست: 484
تاریخ عضویت: شنبه 7 اردیبهشت 1387, 1:34 am
محل اقامت: تــهـران اسمم:محمد
تماس:

یک سوال برنامه نویسی

پست توسط DrXoX » شنبه 28 اردیبهشت 1387, 1:19 pm

سلام

یکی از سوال های آزمون سوم ماهان

پس از اجرای قطعه برنامه زیر مقدار K چه خواهد بود؟

کد: انتخاب همه

 Int i=0,j=1,k=i==j==0;
گزینه ها:
1)0
2)1
3)-1
4) فرمان غلط است

والا من تو کامپیوتر، اجراش کردم شد 1 ولی چطوری؟

آواتار کاربر
SJJ
مشاور وِیژه
مشاور وِیژه
پست: 688
تاریخ عضویت: چهارشنبه 24 مرداد 1386, 11:53 pm

پست توسط SJJ » شنبه 28 اردیبهشت 1387, 1:44 pm

همون 1 درسته :

(j==0) یک عبارت بولیه که نتیجه اش false یا همون 0 می شه.
در عبارت (i==(j==0 اگر به جای (j==0) ، عدد 0 رو قرار بدیم ، داریم (i==0) که یه عبارت درسته و نتیجه اش true یا همون 1 می شه.
در نهایت با توجه به این انتساب

کد: انتخاب همه

((k=(i==(j==0
مقدار k برابر با 1 خواهد شد.

موفق باشید. :wink:

آواتار کاربر
DrXoX
مدیر انجمن
مدیر انجمن
پست: 484
تاریخ عضویت: شنبه 7 اردیبهشت 1387, 1:34 am
محل اقامت: تــهـران اسمم:محمد
تماس:

پست توسط DrXoX » یک‌شنبه 29 اردیبهشت 1387, 11:19 am

sjj نوشته شده:همون 1 درسته :

(j==0) یک عبارت بولیه که نتیجه اش false یا همون 0 می شه.
در عبارت (i==(j==0 اگر به جای (j==0) ، عدد 0 رو قرار بدیم ، داریم (i==0) که یه عبارت درسته و نتیجه اش true یا همون 1 می شه.
در نهایت با توجه به این انتساب

کد: انتخاب همه

((k=(i==(j==0
مقدار k برابر با 1 خواهد شد.

موفق باشید. :wink:
ممنون

چرا -1 نمیشه؟ تو C هر عدد غیر صفری True در نظر گرفته میشه

حاصل میشه True ولی ، از کجا بفهمیم 1 جوابه ، چون -1 هم ارزش درستی داره

:?:

آواتار کاربر
SJJ
مشاور وِیژه
مشاور وِیژه
پست: 688
تاریخ عضویت: چهارشنبه 24 مرداد 1386, 11:53 pm

پست توسط SJJ » یک‌شنبه 29 اردیبهشت 1387, 11:51 am

DrXoX نوشته شده:
sjj نوشته شده:همون 1 درسته :

(j==0) یک عبارت بولیه که نتیجه اش false یا همون 0 می شه.
در عبارت (i==(j==0 اگر به جای (j==0) ، عدد 0 رو قرار بدیم ، داریم (i==0) که یه عبارت درسته و نتیجه اش true یا همون 1 می شه.
در نهایت با توجه به این انتساب

کد: انتخاب همه

((k=(i==(j==0
مقدار k برابر با 1 خواهد شد.

موفق باشید. :wink:
ممنون

چرا -1 نمیشه؟ تو C هر عدد غیر صفری True در نظر گرفته میشه

حاصل میشه True ولی ، از کجا بفهمیم 1 جوابه ، چون -1 هم ارزش درستی داره

:?:
اشتباه شما در تبدیل نوع هاست.
در تبدیل اعداد به عبارت های بولین ، هر عدد غیر صفر True و خود صفر False در نظر گرفته می شه.
ولی در تبدیل عبارت های بولین به نوع عددی ، نمی شه که True به چند تا عدد تبدیل بشه ! در نهایت هر عبارت بولین باید به یک عدد خاص تبدیل بشه ، به صورت پیش فرض هر عبارت True ، به عنوان 1 و هر عبارت False به عنوان 0 در نظر گرفته می شه.
توی این مساله هم یک عبارت بولین به یک عدد نسبت داده شده که حاصل اون عدد فقط می تونه 0 یا 1 باشه ، چون حاصل عبارت بولین True میشه ، انتساب True به عدد اتفاق می افته و حاصل میشه 1.

آواتار کاربر
DrXoX
مدیر انجمن
مدیر انجمن
پست: 484
تاریخ عضویت: شنبه 7 اردیبهشت 1387, 1:34 am
محل اقامت: تــهـران اسمم:محمد
تماس:

پست توسط DrXoX » دوشنبه 30 اردیبهشت 1387, 5:06 am

ممنون از راهنمایی

آواتار کاربر
SJJ
مشاور وِیژه
مشاور وِیژه
پست: 688
تاریخ عضویت: چهارشنبه 24 مرداد 1386, 11:53 pm

پست توسط SJJ » دوشنبه 30 اردیبهشت 1387, 8:24 pm

DrXoX نوشته شده:ممنون از راهنمایی
موفق باشید ! :wink:

قفل شده