زمان کنونی: ۰۶ خرداد ۱۳۹۹, ۰۱:۲۶ ب.ظ مهمان گرامی به انجمن مانشت خوش آمدید. برای استفاده از تمامی امکانات انجمن می‌توانید عضو شوید.
گزینه‌های شما (ورودثبت نام)

عملکرد کاما " , " در زبان ++C

ارسال:
  

enofcom پرسیده:

عملکرد کاما " , " در زبان ++C

سلام دوستان.. قطعه کد زیر عمل ضرب دو عدد رو انجام میده. میخوام بدونم عملکرد کاما " , " اینجا دقیقا چکار میکنه؟ مثلا در خط: (return a+multiply(a,b-1 اگر a=4 و b=5 بدیم، میشه (۴,۴)+۴ خب این ۴,۴ یعنی چی در هم ضرب میشن؟

سوال بعدی اینکه تو همین برنامه return a رو به return 1 تغییر دادم و جواب بهم ریخت. اگه کسی بتونه مرحله به مرحله نحوه ذخیره شدنش تو پشته و نحوه محاسبش رو بگه ممنون میشم.
}()int main
;int i,ii,p
;cin>>i>>ii
;(p=multiply(i,ii
;cout<<p
{

}(int multiply(int a, int b
;if(b==1) return a
;(else return a+multiply(a,b-1
{
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

ph0en1x پاسخ داده:

RE: عملکرد کاما " , " در زبان ++C

(۰۳ اردیبهشت ۱۳۹۸ ۰۲:۳۷ ب.ظ)enofcom نوشته شده توسط:  سلام دوستان.. قطعه کد زیر عمل ضرب دو عدد رو انجام میده. میخوام بدونم عملکرد کاما " , " اینجا دقیقا چکار میکنه؟ مثلا در خط: (return a+multiply(a,b-1 اگر a=4 و b=5 بدیم، میشه (۴,۴)+۴ خب این ۴,۴ یعنی چی در هم ضرب میشن؟

سوال بعدی اینکه تو همین برنامه return a رو به return 1 تغییر دادم و جواب بهم ریخت. اگه کسی بتونه مرحله به مرحله نحوه ذخیره شدنش تو پشته و نحوه محاسبش رو بگه ممنون میشم.
}()int main
;int i,ii,p
;cin>>i>>ii
;(p=multiply(i,ii
;cout<<p
{

}(int multiply(int a, int b
;if(b==1) return a
;(else return a+multiply(a,b-1
{

عملگر کاما ضرب انجام نمیده. عملگر کاما جدا کننده است. این برنامه‌ای که شما دارید میبینید داره از یه تابع بازگشتی استفاده می‌کنه. به نظرم شما برید اول مفاهیم پایه سی پلاس پلاسو یاد بگیرید بعد این چیزا خود به خود براتون حل میشه.
اون multiply داخل تابع main که میبینید یه فراخوانی تابع هست که تعریف تابع هم پایین نوشته شده. حالا با استفاده از دستور multiply(i,ii) دو عدد گرفته شده از کاربر به تابع multiply فرستاده میشن که داخل تابع multiply با استفاده از فراخوانی‌های بازگشتی ضرب رو به صورت جمع‌های متوالی پیاده سازی کرده. و صد البته اگه به جای a یک برگردونید تابع اشتباه کار میکنه.
به نوعی این تابع این کارو میکنه
فرض کنیم کاربر اعداد ۱۰ و ۵ رو وارد کرد. این تابع به جای اینکه عدد ۱۰ رو در ۵ ضرب کنه و نتیجه رو برگردونه، ۱۰ رو ۵ بار با خودش جمع میکنه و نتیجه رو بر می‌گردونه.
نقل قول این ارسال در یک پاسخ

ارسال:
  

enofcom پاسخ داده:

RE: عملکرد کاما " , " در زبان ++C

(۰۳ اردیبهشت ۱۳۹۸ ۰۸:۳۴ ب.ظ)ph0en1x نوشته شده توسط:  
(03 اردیبهشت ۱۳۹۸ ۰۲:۳۷ ب.ظ)enofcom نوشته شده توسط:  سلام دوستان.. قطعه کد زیر عمل ضرب دو عدد رو انجام میده. میخوام بدونم عملکرد کاما " , " اینجا دقیقا چکار میکنه؟ مثلا در خط: (return a+multiply(a,b-1 اگر a=4 و b=5 بدیم، میشه (۴,۴)+۴ خب این ۴,۴ یعنی چی در هم ضرب میشن؟

سوال بعدی اینکه تو همین برنامه return a رو به return 1 تغییر دادم و جواب بهم ریخت. اگه کسی بتونه مرحله به مرحله نحوه ذخیره شدنش تو پشته و نحوه محاسبش رو بگه ممنون میشم.
}()int main
;int i,ii,p
;cin>>i>>ii
;(p=multiply(i,ii
;cout<<p
{

}(int multiply(int a, int b
;if(b==1) return a
;(else return a+multiply(a,b-1
{

عملگر کاما ضرب انجام نمیده. عملگر کاما جدا کننده است. این برنامه‌ای که شما دارید میبینید داره از یه تابع بازگشتی استفاده می‌کنه. به نظرم شما برید اول مفاهیم پایه سی پلاس پلاسو یاد بگیرید بعد این چیزا خود به خود براتون حل میشه.
اون multiply داخل تابع main که میبینید یه فراخوانی تابع هست که تعریف تابع هم پایین نوشته شده. حالا با استفاده از دستور multiply(i,ii) دو عدد گرفته شده از کاربر به تابع multiply فرستاده میشن که داخل تابع multiply با استفاده از فراخوانی‌های بازگشتی ضرب رو به صورت جمع‌های متوالی پیاده سازی کرده. و صد البته اگه به جای a یک برگردونید تابع اشتباه کار میکنه.
به نوعی این تابع این کارو میکنه
فرض کنیم کاربر اعداد ۱۰ و ۵ رو وارد کرد. این تابع به جای اینکه عدد ۱۰ رو در ۵ ضرب کنه و نتیجه رو برگردونه، ۱۰ رو ۵ بار با خودش جمع میکنه و نتیجه رو بر می‌گردونه.

ممنون دوست عزیز..
توابع رو خونده بودم و میدونستم که تابع multiply یک تابع فراخوانده شده در Main هستش و ورودی میگیره ولی اون کاما یکم منو سردرگم کرده بود و نحوه محاسبه اش رو نمیدونستم.

پس دلیل اینکه return a رو وقتی به return 1 تغییر میدادم به جای عدد ۲۰ عدد ۱۷ رو میداد همینه که ۴ رو ۴بار در خودش جمع میبنده که میشه ۱۷=۱+۱۶ .

ممنون دوست عزیز لطف کردی...
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
  شکایت مردم از نحوه عملکرد نیروی انتظامی - ۱۹۷ H-Arshad ۳ ۲۲ ۲۳ مهر ۱۳۹۶ ۰۳:۱۵ ق.ظ
آخرین ارسال: H-Arshad
  کدام زبان برای هوش مصنوعی بهتر است؟ فرق بین زبان های هوش مصنوعی چیست؟ azam2075 ۲ ۱,۲۲۶ ۰۸ مهر ۱۳۹۶ ۱۲:۳۷ ق.ظ
آخرین ارسال: azam2075
  دانلود رایگان کتاب «زبان عمومی دکتری زیر ذره بین» مرجع اصلی زبان کنکور دکتری generalenglish ۰ ۱,۹۲۶ ۱۸ اردیبهشت ۱۳۹۶ ۰۹:۴۳ ب.ظ
آخرین ارسال: generalenglish
Brick نحوه عملکرد تراشه ۷۴۸۵ alitat ۲ ۱,۲۲۰ ۱۰ آبان ۱۳۹۵ ۰۵:۰۵ ب.ظ
آخرین ارسال: signal_micro
  عملکرد الگوریتم ساعت shbeheshti ۲ ۹۰۲ ۱۷ فروردین ۱۳۹۵ ۰۲:۵۱ ب.ظ
آخرین ارسال: shbeheshti
  حسگر بلعیدنی با عملکرد مشابه گوشی پزشکی sargonco ۰ ۷۴۵ ۰۱ آذر ۱۳۹۴ ۰۲:۵۹ ب.ظ
آخرین ارسال: sargonco
Information بررسی نحوه عملکرد سیستم فروشگاه آنلاین - rasool - ۳۷ ۱۸,۱۱۶ ۱۹ آبان ۱۳۹۴ ۰۴:۵۲ ب.ظ
آخرین ارسال: Farahnaz_J
  کدام زبان را برای یادگیری زبان دوم بعد از انگلیسی انتخاب کنم؟! eng.ma30 ۸ ۲,۹۸۸ ۲۶ مهر ۱۳۹۴ ۰۳:۳۷ ب.ظ
آخرین ارسال: eng.ma30
  کلاس زبان یا روش دیگه برای تقویت زبان (همه نظر بخصوص Speaking) mostafa2012 ۲ ۱,۷۳۹ ۱۴ مهر ۱۳۹۴ ۰۳:۱۰ ب.ظ
آخرین ارسال: crevice
  کسی درمورد عملکرد تبلت Acer Iconia W4 3G - 32GB اطلاعی داره؟ abraham ۱ ۸۸۳ ۰۴ شهریور ۱۳۹۴ ۰۱:۳۶ ب.ظ
آخرین ارسال: abraham

پرش به انجمن:

Can I see some ID?

به خاطر سپاری رمز Cancel

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close

رمزت رو فراموش کردی؟

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. close