View Full Version : سوال: مقدار دهی آرایه به این شکل خاص
Sundown
پنج شنبه 17 تیر 1389, 21:06 عصر
با سلام
میخواستم ببینم دلیل چاپ عدد 5 در برنامه زیر چیه ؟
از کد به نظر میرسه که عدد 4 باید چاپ شه ولی عدد 5 چاپ میشه چرا ؟
int a[3][3]={{1,8},(2,4,6),(5)};
cout<<a[1][1];
PC2st
پنج شنبه 17 تیر 1389, 22:13 عصر
چون از پرانتز به جای { و } استفاده شده :لبخند: صحیح شده:
int a[3][3]={{1,8},{2,4,6},{5}};
cout<<a[1][1];
Sundown
پنج شنبه 17 تیر 1389, 22:48 عصر
چون از پرانتز به جای { و } استفاده شده :لبخند: صحیح شده:
int a[3][3]={{1,8},{2,4,6},{5}};
cout<<a[1][1];
این و که میدونم
ببینید این یکی از سوالات کنکور کاردانی به کارشناسی بوده
این سوال رو داده و گفته خروجی چیه ؟
وقتی این برنامه رو کامپایل میکنم نتیجه عدد 5 میشه. میخوام بدونم چرا ؟
نگفتم که اصلاحش کنید.
ممنون
PC2st
پنج شنبه 17 تیر 1389, 23:20 عصر
چون کاما در زبان ++C یک مفهوم خاص داره... اگر درون { و } نباشه البته.
در جایی که چند دستور یا چند مقدار با کاما از هم جدا شدند، آخرین آنها به عنوان خروجی برگشت داده میشه:
int i = (1, 2, 3);
int j = (i += 1, i++);
و در مورد دستور شما، معادل زیر خواهد شد:
int a[3][3]={{1,8},6,5};
آرایهها در C بصورت پشتسر هم در یک ردیف قرار میگیرد و حتی آرایه دو بعدی و چند بعدی و ... همه در یک ردیف قرار میگیرند، و شما خواستید که از سطر ۱ ستون ۱ را انتخاب کنید، در اینجا چون اعداد ۶ و ۵ درون { و } دوم قرار ندارند، پس هر دوی آنها به عنوان اعضای سطر ۱ در نظر گرفته میشوند و ستون ۱ از سطر ۱ برابر ۶ خواهد شد، به جای دستور بالا میتوانستیم اینطور بنویسیم:
int a[3][3]={1,8,6,5};
یا
int a[3][3]={{1,8},{6,5}};
Sundown
جمعه 18 تیر 1389, 00:12 صبح
int a[3][3]={1,8,6,5};
البته این جایگزینی که نوشتید یه مشکل داره
با توجه به گفته هاتون معادل دقیق کد من میشه
int a[3][3]={1,8,0,6,5,0,0,0,0};
به هرحال ممنون پاسخم رو گرفتم
PC2st
جمعه 18 تیر 1389, 00:35 صبح
ممنون. درسته حواسم پرت بود، از بس که به هزار جا کله میزنم! :شیطان:
باید بعد از عدد 8 یک ضفر قرار میدادم چون در واقع ۳ در ۳ بود من اشتباهاً همه چیز را دو به دو گرفتم! آنهایی هم که مشخص نشدند بطور پیشفرض صفر میشوند.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.