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

عملکرد کاما " , " در زبان ++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 تغییر میدادم به جای عدد ۲۰ عدد ۱۷ رو میداد همینه که ۴ رو ۴بار در خودش جمع میبنده که میشه ۱۷=۱+۱۶ .

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



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
  کدام زبان برای هوش مصنوعی بهتر است؟ فرق بین زبان های هوش مصنوعی چیست؟ azam2075 ۳ ۵,۴۳۹ ۱۴ مهر ۱۴۰۰ ۰۷:۲۱ ب.ظ
آخرین ارسال: علیصا
  معرفی زبان برنامه نویسی کریستال : Crystal elecomco ۰ ۲,۰۴۰ ۰۲ خرداد ۱۳۹۹ ۰۲:۵۵ ب.ظ
آخرین ارسال: elecomco
  کسی اینجا با زبان CLIPS اشناس؟ teraktor2003 ۱ ۲,۰۰۲ ۱۵ بهمن ۱۳۹۶ ۰۶:۴۷ ب.ظ
آخرین ارسال: nima_pw
  شکایت مردم از نحوه عملکرد نیروی انتظامی - ۱۹۷ H-Arshad ۳ ۲۲ ۲۳ مهر ۱۳۹۶ ۰۳:۱۵ ق.ظ
آخرین ارسال: H-Arshad
  دانلود رایگان کتاب «زبان عمومی دکتری زیر ذره بین» مرجع اصلی زبان کنکور دکتری generalenglish ۰ ۳,۶۹۷ ۱۸ اردیبهشت ۱۳۹۶ ۰۹:۴۳ ب.ظ
آخرین ارسال: generalenglish
Brick نحوه عملکرد تراشه ۷۴۸۵ alitat ۲ ۲,۷۹۹ ۱۰ آبان ۱۳۹۵ ۰۵:۰۵ ب.ظ
آخرین ارسال: signal_micro
  عملکرد الگوریتم ساعت shbeheshti ۲ ۲,۲۹۶ ۱۷ فروردین ۱۳۹۵ ۰۲:۵۱ ب.ظ
آخرین ارسال: shbeheshti
  حسگر بلعیدنی با عملکرد مشابه گوشی پزشکی sargonco ۰ ۱,۶۰۶ ۰۱ آذر ۱۳۹۴ ۰۲:۵۹ ب.ظ
آخرین ارسال: sargonco
Information بررسی نحوه عملکرد سیستم فروشگاه آنلاین - rasool - ۳۷ ۳۲,۳۰۳ ۱۹ آبان ۱۳۹۴ ۰۴:۵۲ ب.ظ
آخرین ارسال: Farahnaz_J
  کدام زبان را برای یادگیری زبان دوم بعد از انگلیسی انتخاب کنم؟! eng.ma30 ۸ ۶,۸۴۲ ۲۶ مهر ۱۳۹۴ ۰۳:۳۷ ب.ظ
آخرین ارسال: eng.ma30

پرش به انجمن:

Can I see some ID?

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

Feeling left out?


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

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

Feeling left out?


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