اطلاعیه

Collapse
No announcement yet.

نمایش اعداد خیلی بزرگ و اعشاری

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    نمایش اعداد خیلی بزرگ و اعشاری

    سلام

    من میخوام برای ماشین حسابم که با میکروی mega32 کار میکنه و lcd 16*2 داره
    اعداد خیلی بزرگ مثلا 999999999999 رو نشون بدم رو lcd ولی هر کاری میکنم
    یعنی int , long , float امتحان کردم ولی بازم قاطی میشه یعنی وقتی از مرز
    999999 میگزره یه اعداد منفی قاطی پاتی نشون میده و منفی !!

    میخوام بهم بگید چی کار کنم که این اعداد رو بپزیره !!!! ؟؟؟؟؟؟؟؟؟؟///
    ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
    s-h-s.blogfa.com

    #2
    پاسخ : نمایش اعداد خیلی بزرگ و اعشاری

    سلام
    اگر از کدویژن استفاده میکنی توی Help نرم افزار سرچ کن Data Types اونجا میتونی رنج متغییر ها رو ببینی
    در ضمن مقاله Lcd کاراکتری رو هم نگاه کن
    از دانلود سنتر میتونی دانلودش کنی
    در دیر مغان آمد یارم قدحی در دست
    مست از می می خواران از نرگس مستش مست

    دیدگاه


      #3
      نمایش اعداد خیلی بزرگ و اعشاری

      من همه این کارها رو کردم
      باری همین اومدم اینجا سوال کنم !!!!

      و اینکه من میخوام خارج از اون رنج کار کنم .
      بله من کد ویژن کار میکنم
      s-h-s.blogfa.com

      دیدگاه


        #4
        پاسخ : نمایش اعداد خیلی بزرگ و اعشاری

        ?
        s-h-s.blogfa.com

        دیدگاه


          #5
          پاسخ : نمایش اعداد خیلی بزرگ و اعشاری

          سلام دوست عزیز
          من یه مقدار فکر کردم چیزی خاصی به ذهنم نرسید چون تا حالا همچین مشکلی نداشتم
          اما میتونی عدد رو به دو قسمت تقسیم کنی و بریزی توی 2 تا متغیر
          یا اینکه یه آرایه تعریف کنی به هر تعداد رقیم که می خوای و توایع صزب و تقیم رو براشون بنویسی!
          در دیر مغان آمد یارم قدحی در دست
          مست از می می خواران از نرگس مستش مست

          دیدگاه


            #6
            پاسخ : نمایش اعداد خیلی بزرگ و اعشاری

            :eek: دوستان دیگه نمیتونن کمک کنن ؟
            :angry:

            من راه حل عملی میخوام .
            s-h-s.blogfa.com

            دیدگاه


              #7
              پاسخ : نمایش اعداد خیلی بزرگ و اعشاری

              سلام :

              من هم 100% با دوست خوبم جناب یارمحمدی موافقم !
              بهتره برای تعاد مشخصی عدد یک آرایه تشکیل بدید تا با تعداد رقم مشکلی نداشته باشید .
              یعنی اول برنامه یک آرایه تعریف کنید تا یک مقدار از فضای حافظه رو ذخیره کنید . سپس برای مثلاً هر 5 رقم یکی ار خونه های حافظه رو بهش اختصاص بدین .
              با این روش فکر کنم ، رقم های واقعاً بزرگ رو هم بتونید نگه دارید و نمایش بدبد .
              من خودم در یک برنامه مجبور بودم یک عدد 21 رقمی رو ذخیره کنم و نمایش بدم ، با این روش به راحتی انجام دادم .

              موفق باشید

              دیدگاه


                #8
                پاسخ : نمایش اعداد خیلی بزرگ و اعشاری

                ممنون

                راستش از اونجایی که من با آرایه ها زیاد کار نکردم

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

                ممنون
                s-h-s.blogfa.com

                دیدگاه


                  #9
                  پاسخ : نمایش اعداد خیلی بزرگ و اعشاری

                  دوست عزیز سلام
                  چرا ناراحتید؟؟؟
                  خوب

                  قبلا اگه دقت کرده باشی انواع دادهای در اندازه بیتی و n بایتی باهاشون کار می کنی سایزهای محل های ذخیره دیتا رو که می تونه متغییر یا ثابت باشه رو مشخص می کنه و وقتی می خوای اونا رو می تونی بازیابی بکنی و ازشون استفاده بکنی ولی اگه تعداد دادها توی یه نوع زیاد باشه اونوقت ممکنه به مشکل برخورد بکنی

                  اینجاست که از آرایه ها استفاده می کنند
                  من به زبان برنامه نویسی خاصی اشاره نمی کنم چون خودت نگفتی با چی کار می کنی
                  ارایه می تونی ساده 1 بعدی باشه یا چند بعدی ( توی میکرو کنترلر Avr به خاطر محدودیت توی sram از 1 بعدی به بالا زیاد نمیشه استفاده کرد )
                  حالا وقتی شما مثلا یه دونه آرایه 1 بعدی اونم مثلا از نوع 1 باتی فرضا بصورت یه آرایه 8 تائی درست می کنی یعنی در واقع شما 8 ردیف از خونه های حافظه ات رو یه جا از یه نوع تعریف کردی

                  توی زبان سی آرایه به این صورت کلی تعریف میشه
                  [طول آرایه] نام آرایه نوع آرایه

                  به هر کدوم از آرایه ها هم می تونی این جوری دسترسی پیدا بکنی هر خونه این آرایه یه اندیس داره واسه همین به آرایه متغییرهای اندیس دار هم میشه گفت یعنی آرایه یه مجموعه عنصر هم نوعه
                  اولین اندیس هم شماره اش 0 هستش


                  حالا چه طوری داده ات رو ذخیر بکنی ؟
                  خیلی راحت
                  عدد شما چند رقمیه
                  فرضا 10 رقمی
                  یه آرایه 10 تائی تعریف بکن

                  چه طوری عدد رو وارد آرایه بکنی؟؟
                  خیلی راحت می تونی یه حلقه بنویسی توی اون حلقه ای کی بوردت که خوبه وقفه داشته باشه استفاده بکنی اگه کی بورد فشرده شد
                  اول تست بشه توی آرایه 10 رقم ذخیره شده اگه جواب آره است اون عدد رو بگیره متغییری که اندیس محل ذخیره رو نشون می ده به خونه ای که باید عدد توی اون ذخیره میشه اشاره بکنه عدد توی اون ذخیره بشه

                  بعدی توی مرحله بعدی این کل آرایه رو از اول تا جائی که خالیه از توی آرایه بخونی و روی ال سی دی نمایش بدی

                  ساده است توی بسکام بنویسی خیلی ساده است چون اونجا خورده کاری زیاد نداره

                  موفق باشی

                  دیدگاه


                    #10
                    پاسخ : نمایش اعداد خیلی بزرگ و اعشاری

                    ممنون

                    من با سی کار میکنم
                    s-h-s.blogfa.com

                    دیدگاه


                      #11
                      پاسخ : نمایش اعداد خیلی بزرگ و اعشاری

                      باتوجه به قدیمی بودن تاپیک و به دلیل اینکه من هم به این موضوع برخورد کردم و خب باعث گرفته شدن وقت و... گردید نمونه کد مورد استفاده خودم که تست هم شده رو برای دوستان قرار می دم امیدوارم استفاده لازم رو ببرند. اگر پیشنهادی هم برای کوچک تر شدن کد دارید بفرمایید. ممنون

                      #include <mega16.h>
                      #include <stdio.h>
                      #include <stdlib.h>
                      #include <lcd.h>
                      #include <delay.h>


                      #asm
                      .equ __lcd_port = 0x15; //PORTC [PORTA = 0x1b, PORTB = 0x18, PORTC = 0x15, PORTD = 0x12]
                      #endasm


                      void main(void)
                      {
                      unsigned long i=0;
                      unsigned int z;


                      unsigned char a;
                      char aa[10];
                      unsigned char b;
                      char bb[10];
                      unsigned char c;
                      char cc[10];
                      unsigned char d=0;
                      char dd[10];
                      unsigned char e=0;
                      char ee[10];
                      unsigned char f=0;
                      char ff[10];
                      unsigned char g=0;
                      char gg[10];
                      unsigned char h=0;
                      char hh[10];

                      lcd_init(16);
                      lcd_clear();
                      lcd_gotoxy(0,0);
                      lcd_putsf("Hello");




                      while (1)
                      {
                      delay_ms(10);
                      i++;
                      delay_ms(10);

                      a=i%10;
                      z=i/10; b=z%10;
                      z=i/100; c=z%10;
                      z=i/1000; d=z%10;
                      z=i/10000; e=z%10;
                      z=i/100000; f=z%10;
                      z=i/1000000; g=z%10;
                      z=i/10000000; h=z%10;


                      lcd_gotoxy(7,1);
                      sprintf(aa,"%d",a);
                      lcd_puts(aa);

                      lcd_gotoxy(6,1);
                      sprintf(bb,"%d",b);
                      lcd_puts(bb);

                      lcd_gotoxy(5,1);
                      sprintf(cc,"%d",c);
                      lcd_puts(cc);

                      lcd_gotoxy(4,1);
                      sprintf(dd,"%d",d);
                      lcd_puts(dd);

                      lcd_gotoxy(3,1);
                      sprintf(ee,"%d",e);
                      lcd_puts(ee);

                      lcd_gotoxy(2,1);
                      sprintf(ff,"%d",f);
                      lcd_puts(ff);

                      lcd_gotoxy(1,1);
                      sprintf(gg,"%d",g);
                      lcd_puts(gg);

                      lcd_gotoxy(0,1);
                      sprintf(hh,"%d",h);
                      lcd_puts(hh);


                      }
                      }

                      گویند سنگ لعل شود در مقام صبر اری شود ولی به خون جگر شود
                      همیشه آخر همه چیز خوبه، اگر هم هنوز خوب نشده پس هنوز آخرش نشده(چارلی چاپلین)

                      دیدگاه

                      لطفا صبر کنید...
                      X