سلام
من میخوام برای ماشین حسابم که با میکروی mega32 کار میکنه و lcd 16*2 داره
اعداد خیلی بزرگ مثلا 999999999999 رو نشون بدم رو lcd ولی هر کاری میکنم
یعنی int , long , float امتحان کردم ولی بازم قاطی میشه یعنی وقتی از مرز
999999 میگزره یه اعداد منفی قاطی پاتی نشون میده و منفی !!
میخوام بهم بگید چی کار کنم که این اعداد رو بپزیره !!!! ؟؟؟؟؟؟؟؟؟؟///
؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
بستگی به کمپایلرت داره معمولا بیشتر از 4 بایت رو پشتیبانی نمی کنن که می شه 2 به توان 32 نوع فلوت هم اعداد با رازش کم رو حذف می کنی بنابراین به دردت نمی خوره
اعداد رو هم برای اینکه منفی نشون نده unsigned یعنی بدون علامت تعریف کن که دوبرابر می شن (البته اگه منفی هم داری نمی شه)
در کل اگه خواستی بزرگتر باشن باید از آرایه ها استفاده کنی و برنامه ضرب و تقسیم رو دستی بنویسی (همون روشی که خودت ضرب و جمع می کنی)
من از codevision استفاده میکنم و من تو ریاضی افتضاح هستم .
اگه میشه برام به زبان C بنویسید و اینکه چه جوری . ؟؟ ؟
و اینکه من الان دارم رو این ماشین حساب کار میکنم و به بنبست خوردم .
میگید چی کار کنم .
باید ببنیم روی این عدد چه محاسباتی می خواد انجام بشه شاید از شبیه سازی بشه استفاده کرد مثلا long تا 9 رقم رو نشون میده ولی ممکنه تو خروجی نشه نمایش داد
من همرو امتحان کردم
تو خروجی اعداد بزرگ رو قاطی میکنه !
من میخوام 4 عمل اصلی رو روشون انجام بدم
تا اینجای کار هم بدون کپی کردن انجام دادم یعنی تعریف کی پد و نشون دادن اعداد بر روی ال سی دی . ولی اینجا رو هر کاری کردم نشد که نشد .
من خودم به فکر این افتادم که بیام اون عدد رو به کاراکتر تبدیل کنم ولی محاسبات رو نمیدونم چی کار کنم .
اگه کسی میتونه این قسمت از برنامه رو کمکم کنه ممنون میشم .
نمیدونم مشکل از تعریف اون متغییره یا اصلا میکرو نمیتونه بیشتر از این عدد رو بخونه ؟
!!!! ؟؟؟؟
این مشق شب یکی بود براش نوشتم اینم سورسش
http://www.iranled.com/Download/n.zip
اینم توضیحاتی که براش نوشته بودم
کد:
ba vc++ 6 neveshte shode to foldere n/release/n.exe ro ejra kon
be de
0
80
-1
-1
80! ro barat hesab mikoneh age khasti bishtar ham mitoni bede masalan
0
30
24
7
-1
-1
in 30! va 24^7 ro hesab mikoneh :d
این برای فاکتریل های بالا و توان های بسیار زیاده
من که چیزی از برنامه نفهمیدم !
یعنی میتونم تغییرش بدم تا مثلا 999999 * 999999 رو برام انجام بده بدون اینکه از
فلوت یا لانگ یا بالاتر نیاز باشه استفاده کنم .
و اینکه چرا با C من برای C کد ویژن میخوام و به جای cout میخوام رو lcd استفاده کنم
میشه تغییرش داد ؟
???? !!!!!!
الوووووووووووووو
کسی این سوال ساده رو نمیتونه برام حل کنه :cry: 8O
خوب عزیز اگر سادس چرا خودت دنبالشو نمیگیری
باید کوچیکش کنی.....یعنی بجای مثلا عملیات 9999 + 9999 به دوتا 99 +99 تبدیل کنی..وحواست باشه که این کوچیک شده هات از محدوده مجاز متغیرت بیشتر نباشه.....و خروجی دیگه یک متغیر نمایش داده نمیشه.... یک آرایست که با احتساب همون ده بر یک هات و بترتیب از سمت راست که دو به دو حساب کردی نمایش میدی ..
مثلا در جمع :
a=9
b=9+
c=a+b
c رو نمایشش بده و با تقسیم بر ارقامش یا مد( باقیمانده) یا فرامین دیگه ( شیفت به چپ) عدد آور فلو یا همون ده بر یکشو در بیار و بریز تو مثلا d
حالا ارقام دسته دومتو شروع کن
a1=9
b1=9
d1=a1+b1+d
که دی همون عدد ده بر یکت بود
حالا نمایش بده ال سی دی
اول c رو نمایشش بده ( که در مثال ما میشه 9+9=18 که 8 رو میریزی تو سی و 1 هم که سریزت هست میریزی تو d )
بعدم d1 رو نمایشش می دی ( که دوباره میشه 9+9+1 که میشه 19 )
حالا کنار هم میشه 198
با یه عدد نه خیلی بزرگ اول برنامشو بنویس...بعد خودت دستت میاد
یکم هم خودت باید تلاش کنی
کد اماده هلو برو تو گلو که پیدا نمی شه :wink:
اینو گفتم یکی یبار می خواست من براش نوشتم اصول کار همینه شما که به جای cout می خوای Print باشه خودت باید زحمتش رو بکشی :wink:
ممنون
راستش نه من اصلا از این جور آدمها نیستم
در این رابطه هم تا حالا چند برنامه مفید گرفتم و کار کردند فقط تبدیل اونها به سی در کد ویژن یه خورده برام سخت بود چون مثلا یکیشون از توابع گرافیکی استفاده کرده بود
و من پدرم در اومد که سادش کنم
الان هم دارم کار میکنم رو اینها و مطالب شما .
ممنون
بای :) :wink: