PDA

نسخه کامل مشاهده نسخه کامل : پایان آرایه کاراکتری چیه در #c چیه؟



sanam.b
03-08-2008, 12:47
سلام به همه دوستان
سوالم اینه پایان آرایه کاراکتری چیه؟ رشته خودش پایان داره اما در آرایه کاراکتری پایان ندیدم
اصلا از اول توضیح می دم
مثلا شما رشته sanam رو در یه آرایه کاراکتری به نام matn قرار میدید
کدی هم که قرار میدید این جوریه

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
وقتی که شمارنده به کاراکتر n می رسه lheadبه جایی اشاره می کنه که اصلا وجود نداره در نتیجه خطای "خارج ار محدوده آرایه "رو می ده
گفتند که می تونی با دستور append یه کاراکتر مشخص به آرایه اضافه کنی که اونهم مال string نه کاراکتر.
پیشنهاد شما در این مورد چیه؟


البته خیلی ممنون میشم اگه بگید چطوری میشه این کد رو بهینه کرد

کاری که این کد می کنه اینه که تا وقتی به فاصله خالی نرسیدیم
همه کاراکتر ها رو میخونه و در یک متغیر رشته ایtemp قرار می ده البته اگر به کاراکتر های پایان خط و";",":" رسید هم باید از حلقه بیاد بیرون

_H2_
03-08-2008, 13:37
سلام

مشکل شما این است که در #C تفکرات C++Native دارید.

#C تحت دات نت است و همه چیزش از قبل معلوم و مشخص است و مثل C++Native به اون حد باز نیست که مثلاً آرایه را صرفاً بلوکی از حافظه در نظر بگیرید و حتی بعضاً تجاورز از حدود ان بدون مشکل انجام شود.
آرایه ها در دات نت نمونه ای از کلاسس System.Array هستند و کاملاً مدیریت شده و مستحکم هستند.

مثلاً در مورد آرایه شما، matn.Rank تعداد ابعاد آرایه را پس میدهد و یا matn.Length تعداد اعضای آرایه را بر میگرداند، در محیط VS یک نقطه بزنید تا لیست خواص و متدهای آرایه تان ظاهر شود.

پس برای تشخیص طول آرایه میتوانید از matn.Length استفاده کنید.

ولی در مورد کد بهینه و #C تر!
در مورد الگوریتم تان اگر درست متوجه شده باشم سه کاراکتر فاصله و ; و : یک اولویت دارند و باید با رسیدن به هر یک اینها اسکن تمام شود؟

برای آشنایی بیشتر دو نمونه کد میگذارم
(
اضافه کردن به نمونه string ای مثل temp شما صحیح است ولی دات نت را مجبور به کارهای اضافه میکنید که اگر قرار است به تعداد زیاد و مدام و در حلقه این اضافه شدن انجام شود، کلاسس StringBuilder سریعتر جواب میدهد و بهینه تر است.
)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

و این کد دوم:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

_H2_
03-08-2008, 14:00
سلام مجدد
راستی یک پیشنهاد در الگوریتم اصلیتان دارم، به جای چک کردن فاصله، و خروج با رسیدن به آن، شاید بد نباشد، کل کاراکترهای زیر فاصله را نیز به عنوان پایان در نظر بگیرید.
یعنی کد if اولی چنین شود:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید