View Full Version : سوال: آرایه های بدون اندازه
sourcecode
یک شنبه 09 شهریور 1393, 16:32 عصر
سلام
من آرایه ای بدون اندازه از نوع char تعریف کردم .
char a[]="Ahmad";
حال اگر با دستور cin شش کاراکتر بگیرم کامپایلر خطا میده در صورتی که اگر پنج یا کمتر از پنج کاراکتر بگیرم مشکلی نیست .
در مورد آرایه های از نوع int هم همین مشکل وجود دارد.
در مورد آرایه های دو بعدی از نوع char هم همین مشکل وجود دارد.
در ضمن کامپایلر هم VSC++.Net هست .
parvizwpf
یک شنبه 09 شهریور 1393, 17:59 عصر
در واقع شما با دادن مقدار تعداد آرایه رو تعریف میکنید.
http://stackoverflow.com/questions/19345893/initializing-arrays-in-c-c-with-unknown-size
http://www.cplusplus.com/forum/beginner/7961/
sourcecode
یک شنبه 09 شهریور 1393, 18:58 عصر
دوست عزیز سوالم رو نگرفتی .
من آرایه ای بدون اندازه از نوع char تعریف کردم که مقدار Ahmad جلوی آرایه قرار دارد که باعث میشه طول آرایه 5 بشه. حال اگر من بادستور cin مقداری بیشتر از طول فعلی بگیرم error میده . مثلا متن MyLoveIran رو وارد بکنم کامپایلر گیر میده .
char a[]="Ahmad";
cout<<a<<endl;
cin>>a;
cout<<a;
کامبیز اسدزاده
یک شنبه 09 شهریور 1393, 21:14 عصر
دوست عزیز سوالم رو نگرفتی .
من آرایه ای بدون اندازه از نوع char تعریف کردم که مقدار Ahmad جلوی آرایه قرار دارد که باعث میشه طول آرایه 5 بشه. حال اگر من بادستور cin مقداری بیشتر از طول فعلی بگیرم error میده . مثلا متن MyLoveIran رو وارد بکنم کامپایلر گیر میده .
char a[]="Ahmad";
cout<<a<<endl;
cin>>a;
cout<<a;
خطایی که رخ میده مربوط به خارج از محدوده بودن آرایه شما هستش که در قسمت cin باید کد رو به اینصورت تغییر بدین :
cin >> a[0];
مشکل حل خواهد شد.
sourcecode
سه شنبه 01 مهر 1393, 10:18 صبح
دوست عزیز شما فرض کنید که یک آرایه ای از نوع char با نام a دارید که اندازه ی آن 10 باشد حال اگه از دستور cin>>a; استفاده کنید به راحتی می تونید 10 یا کمتر از 10 کاراکتر رو بگیرید ... منظورم اینه که لازم نیست هر کاراکتر رو به صورت a[0],a[1],.. بگیریم و cin به صورت خودکار تا 10 کاراکتر رو میگیره و اگه بیشتر از 10 کاراکتر رو بگیری کامپایلر error میده .
بعد خاصیت آرایه های بدون اندازه ( unsized array ) اینه که اگه یک آرایه ای از نوع char با نام a ایجاد کردیم ( char a[]="ahmad"; ) , به راحتی بتونیم کاراکترهایی بیشتر یا کمتر از مقدار پیشفرض را در آرایه ی a قرار بدیم , چون تعداد کاراکتر هایی که باید وارد کنیم را خالی گذاشتیم .
مشکل من اینه که اگه کاراکتری بیش از 5 کاراکتر وارد کنم ( چون طول پیشفرض آرایه ی a پنج هست ) , کامپایلر بعد اجرا پنجره زیر را نمایش میده و error میده .
123794
rahnema1
چهارشنبه 02 مهر 1393, 12:49 عصر
بعد خاصیت آرایه های بدون اندازه ( unsized array ) اینه که اگه یک آرایه ای از نوع char با نام a ایجاد کردیم ( char a[]="ahmad"; ) , به راحتی بتونیم کاراکترهایی بیشتر یا کمتر از مقدار پیشفرض را در آرایه ی a قرار بدیم , چون تعداد کاراکتر هایی که باید وارد کنیم را خالی گذاشتیم .
اینجا آرایه بدون اندازه نداریم
اون آرایه a وقتی شما با مقدار ahmad مقدار دهی اولیه می کنید یک آرایه باطول 6 تشکیل می شه ( به طور خودکار یک صفر به انتهای آرایه اضافه می شه)
حالا اگه خواستید بیشتر از سایز آرایه وارد کنید دچار خطا می شه
می تونید از std::string استفاده کنید که هر چه خواستید کاراکتر وارد بشه
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.