مشاهده نسخه کامل
: يه كد كوچك با مشكلات زياد
دوستان من ميخاستم يه كلاس طراحي كنم كه بشه بهش اعداد بزرك داد(1000 رقمي) ولي نمي دونم چرا اين همه ارور مي ده :18::18:
لطفا كمكم كنيد تا اين ارورها رو تصحيح كنيم:11:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
میشه دقیقا بگی اینا چیه که نوشتی؟!
خب کدت خیلی اشکال داره...
aryan1423
19-11-2008, 17:25
اولین مشکلی که باید درست کنی ورودی خوندنته
باید کاراکتر به کاراکتر بری جلو.
مثلا می تونی اول با cin.get کل عدد را در آرایه ای از char بریزی اونوقت روی این آرایه for بزنی و آرایه ی int کلاس Int ت را برابر اون کنی:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سلام
با توجه به كمك هاي شما اين كد رو نوشتم اما در هنگام نوشتنش سوال زير برام برام پيش اومد
--> آيا اين امكان وجود داره كه يه char رو به يه int تخصيص بديم؟(خط 26 و 27 در همين كد)
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و اما من بايد چي كار كنم كه اين كد به اون كلاسي كه ميخام(اعداد بزرگ) نزديكتر بشه؟/ لطفا راهنمايي كنيد تا هر چه زودتر نوشتن اين كلاس رو تموم كنم.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
aryan1423
20-11-2008, 19:15
کدت را خوندم.
به نظر من بهتره در کلاست یک متغیر اینت بگذاری(مثلا tool) که می گوید این عدد ما چند رقمی است.( دیگه لازم نیست این کاره بد هم بکنی :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید)
برای پر کردن آرایه itsBigNumber از روی آرایه ی big این کارو کن:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
امیدوارم فهمیده باشی چرا این کار را کردم(نفهمیدی بپرس)
بعد به نظر من بهتره itsBigNumber را به صورت int * نگیری و از اول طولش را مشخص کنی.
چون تو الان طولش را دقیقا اندازه ی طول عددت گذاشتی برای الان مشکلی نداره ولی اگه بخوای جمع و ضرب و از این چیزا به کدت اضافه کنی شاید تعداد ارقامش بیشتر شه.
دوست عزيز راهنمايي هاي شما خيلي بدردم خورد ولي من از دستور زير
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سر در نميارم اين كه شما هر كاركتر رشته را منهاي كاركتر 0 مي كنيد يعني چه و دقيقا چه كاري انجام ميده؟
و اين كه شما گفتيد نوشتن اين دستور بده!
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مگه با نوشتن دستور زير
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
فرقي داره؟(ميگه هر دوتاش يه كاراكتر را به يه itsNumber تخصيص نميده؟)
دوست عزيز لطفا كامل و جامع و با زباني ساده به سوالاتم پاسخ بدين.:11:
aryan1423
21-11-2008, 00:27
فرض کنید که کاراکتر[ big[i برابر رقم 5 باشد یعنی
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مقدار اصلی داخل[ big[i برابر ASCII code رقم 5 است (یعنی '5' ) نه خود 5.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
شما با این کار[ itsBigNumber[i را برابر ASCII code رقم 5 قرار می دهید نه خود 5.
برای شهود بیشتر بیشتر پیشنهاد می کنم این کد را امتحان کنید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این کار را برای سایر ارقام غیر 5 ( 0 تا 9) نیز انجام بدهید.
حال من می گویم اگر یک char که برابر '5' است را منهای '0' کنیم خود عدد 5 که مورد نظر ماست بدست می آید.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
باز هم میگم برای int کارهای که مربوط به char هست را انجام ندهید( مثل برابر '0\' قرار دادن یک int که به درد نمی خورد این کار برای char مفید است نه int)
سلام
من كاملا اينو فهميدم كه اگه مثلا '9' رو منهاي '0' كنيم مقدار 9 بدست مياد
ولي جواب اين سوال منو ندادين كه چرا وقتي يه كاركتر عدد رو منهاي كاراكتر 0 مي كنيم مقدار اون بدست مياد(وقتي كاركتر را منهاي صفر مي كنيم چه اتفاقي مي افته كه باعث ميشه خود عدد بدست بياد)
aryan1423
21-11-2008, 12:49
اگه خودت یکم بررسی می کردی به راحتی می فهمیدی چرا.
همان طور که گفتم '5' همان ASCII code رقم 5 است. و وقتی یک int را برابر '5' قرار می دهی:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
با این کار متغیر int ما برابر ASCII code رقم 5 میشود نه خود 5.
ASCII code ارقام 0 تا 9 ('0' تا '9') اعدادی به ترتیب از 48 تا 57 هستند:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
پس '0'-'9' یعنی48-57 که برابر 9 است.
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.