ورود

نسخه کامل مشاهده نسخه کامل : int_to_ascii ????



general geranger
20-03-2015, 23:23
سلام دوستان . طبق معمول پای کتاب جعفر نژاد بودم رسیدم به مثال 9_6 که باید یه تابع بنویسم که یه مقدار int بگیره و به صورت یه اشاره گر / آرایه char تحویل بده . 500 بار کدو خوندم نفهمیدم . عین به عینش رو هم نوشتم کامپایل کردم . درست کار میکنه اما بازم نفهمیدم چیزی :|

کد

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

کدی که خودم سعی کردم بنویسم (بالایه رو نفهمیدم اینو نوشتم.) نتیجش یه سری کاراکتر نامفهوم شده :n03:


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

اون قسمتایی که هایلایت شدن دیگه کلا هیچی ازشون نفهمیدم. مگه str از یه آدرس شروع نمیشه با طول ده؟ اگه میخواد هر مرحله یکی بره روش که char بعدی پر شه چرا *str نوشته ؟ این که میشه محتویات اون محل که :| بعد اصلا برام مفهوم نیست با هر ++ چی میشه . آدرس یه char میره جلو؟ بعد بیرون اومدن از while اول آدرس str روی آخرین char میفته؟ بعد تو خطی که زیرش خط هست اصلا چرا اینکارو کرده ؟ محتویات یه جای نا معلوم str -- ??? بعد کاراکتر انتهای رشته رو گذاشته ؟ کاراکتره نمیره داخل اعداد ؟؟؟ اصلا هیچی

تو خطی که tmp = *str; ده برام خیلی نامفهومه چه جوری جاهای درستو پیدا میکنه . با توجه ببه اینکه همه جا باید با *str انجام شده باشه پس آدرس همون آدرسه اول باید باشه . خب اینجوری همه اعداد عین هم میشن بعد یه شماره قبل str جایگزین یه جای نامعلوم از savestr میشه؟؟؟ گییج شدم . جالبه یه cout میذارم که اون قسمت خاص str* رم که شمارش ظاهرا اونجاس نشون بده یه سری چیزای نامفهوم چاپ میشه ولی بعد پایان متد درست نشون میده ؟!؟!؟!؟!؟!
نفهمیدم درست حسابی :| اگر اگر امکانش هست یکی خط به خط توضیح بده بفهمیم چی شد؟؟؟ (خیلی ممنون میشم:n16:) نمیدونم چرا فکر میکنم برای بنامه نویس شدن خنگم:n28: یه روزه روش دارم فکر میکنم هیچیشو نفهمیدم . انگار که جلوم یه زبان جدید گذاشته باشن :|

اگه یه کد ساده برای همین منظور که با اشاره گر ها انجام شده باشه به ذهنتون اومد لطفا دریغ نکنید:n16:

خواب و خوراک ندارم من با این اشاره گرا . خیلی سختن:n27:

یه سوال دیگ]: نحوه عمل کردن کارکترای آرای8ه ای مقل سایر آرایه هاست؟ چون بعضی جاها اسم آرایه رو مینویسن (تو cout ( بعد کلشو مینویسه بدون یه for ؟×!

ahmads
03-04-2015, 02:09
سلام،

کد شمارو که خوندم ظاهر قصد داشتید با Cast کردن یعنی همون استفاده کردن از (char) عدد رو تبدیل به کاراکتر کنی که ممکن نیست. عدد باید یک رقمی باشه و با 48 یعنی صفر کاراکتری جمع بشه برای تبدیل شدن به کاراکتر. برای همین حلقه ی for مقادیر اشتباه رو در آرایه قرار میده. روش کلی که کتاب استفاده کرده به این شکل هست که ابتدا با گرفتن باقیمانده بر 10 و تقسیم بر ده ارقام رو به کاراکتر تبدیل می کنه و در آرایه قرار میده. چون با این روش عدد به شکل "برعکس" در آرایه قرار میگیره لازمه با یک حلقه ی دیگه دوباره آرایه رو برعکس کنه که عدد به شکل صحیح نمایش داده بشه.
اگر عدد 123 باشه، بعد از حلقه ی اول به 321 تبدیل میشه در حلقه ی دوم دوباره به 123 تبدیل میشه. من این کتاب رو نخوندم ولی اگه برای آشنایی و شروع برنامه نویسی هست واقعا بد نوشته شده. مثلا در استایل نوشتن باید به جای *str --=*saveStr; عبارت *str-- =*saveStr; نوشته بشه که خواننده اشتباه نکنه و همینطور از پرانتز گذاری استفاده بشه که اولیت عملگرها ابهامی برای فهمیدن کد درست نکنن. امیدوارم تونسته باشم کمکی کنم. انشاالله موفق باشید.