اطلاعیه

Collapse
No announcement yet.

تبدیل یک ارایه به یک عدد

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

    تبدیل یک ارایه به یک عدد

    سلام . دوستان من یک ارایه به 20 تا عدد صفر و یک دارم که میخوام اونو به یک عدد تبدیل کنم و اون عدد رو توی ایپزام ذخیره کنم . چند تا از دوستان گفته بودن که با دستور atoi میشه تبدیل کرد ولی من هرچی کردم نشد و برای تست هم یک عدد دادم به یک متغیر بعد خواستم اونو با همین دستور تبدیل به عدد کنم ولی همش عدد صفر رو بر میگردونه . دیگه دیوانه شدم . راستی این رو توی avr studio 6 دارم انجام میدمر :angry: :angry: :angry: :angry: :angry: :angry: :angry: :angry: :angry: :angry: :angry:
    حالا اگه میشه کمکم کنید
    ممنون پیشاپیش

    #2
    پاسخ : تبدیل یک ارایه به یک عدد

    با بیسکام در خدمتم

    دیدگاه


      #3
      پاسخ : تبدیل یک ارایه به یک عدد

      فرق نداره به چه زبانی می خواید انجام بدین. میتویند به این صورت عمل کنید :
      For(i=0;i<=20;i++)
      {
      Number=number+a[i]*(2^i);
      }
      چيزي را بگو که بتواني بنويسي
      چيزي را بنويس که بتواني امضا کني
      چيزي را امضا کن که بتواني به آن عمل کني (ناپلئون)

      دیدگاه


        #4
        پاسخ : تبدیل یک ارایه به یک عدد

        دوست عزیز دستور atoi میاد و تمام اعداد داخل ارایه رو کنار هم قرار میده و عدد رو به شما تحویل میده. ولی شما باید تبدیل مبنا انجام بدین. با همین روش که دوستمون فرمودن. اما حواستون به تغییراتی که باید بدین باشه.

        دیدگاه


          #5
          پاسخ : تبدیل یک ارایه به یک عدد

          میشه یک کم بیشتر توضیح بدین . من توی این سی تازه کارم. منظورتون رو از تغییرات اصلاً نفهمیدم :sad: :sad:

          دیدگاه


            #6
            پاسخ : تبدیل یک ارایه به یک عدد

            نوشته اصلی توسط masoud.gha
            میشه یک کم بیشتر توضیح بدین . من توی این سی تازه کارم. منظورتون رو از تغییرات اصلاً نفهمیدم :sad: :sad:
            ببینید تابع atoi همون ArrayToInteger هستش، یعنی یک رشته(Array) رو میگیره و به عدد(Integer) تبدیل میکنه و این تبدیل هم در مبنای 10 هستش، اما شما تبدیل در مبنای 2 میخوایید، مثلا 1000 تبدیل شه به 8
            پس باید از کد دوستمون استفاده کنید، فقط داخل for باید بنیوسید i<20 مساوی رو بردارید
            اونچيزي که در دانشگاه ياد ميگيريد، "الفبايي" هست براي نوشتن يک "رمان" !!

            دیدگاه


              #7
              پاسخ : تبدیل یک ارایه به یک عدد

              نوشته اصلی توسط بابابرقـی
              ببینید تابع atoi همون ArrayToInteger هستش، یعنی یک رشته(Array) رو میگیره و به عدد(Integer) تبدیل میکنه و این تبدیل هم در مبنای 10 هستش، اما شما تبدیل در مبنای 2 میخوایید، مثلا 1000 تبدیل شه به 8
              پس باید از کد دوستمون استفاده کنید، فقط داخل for باید بنیوسید i<20 مساوی رو بردارید
              سلام منم مشکل دوستمون رو دارم
              کد:
              char ss[4]={1,2,3,4};
              void check(void)
              {
                 int num;
                num=atoi(ss);
                if(num==code)
                {
                lcd_clr();
                sprf(lcd,"",num);
                lcd_putsf("r");
                lcd_putsf(lcd);
                }
                else
                {
                sprf(lcd,"",num);
                lcd_clr();
                lcd_putsf("W");
                lcd_putsf(lcd);
                }
              }
              خروجی w0 هستش . چرا؟
              اشکهايي که پس از هر شکست ميريزيم همان عرقيست که براي پيروزي نريخته ايم.
              هيتلر

              دیدگاه


                #8
                پاسخ : تبدیل یک ارایه به یک عدد

                نوشته اصلی توسط Saeed Saeb
                سلام منم مشکل دوستمون رو دارم
                کد:
                char ss[4]={1,2,3,4};
                void check(void)
                {
                   int num;
                  num=atoi(ss);
                  if(num==code)
                  {
                  lcd_clr();
                  sprf(lcd,"",num);
                  lcd_putsf("r");
                  lcd_putsf(lcd);
                  }
                  else
                  {
                  sprf(lcd,"",num);
                  lcd_clr();
                  lcd_putsf("W");
                  lcd_putsf(lcd);
                  }
                }
                خروجی w0 هستش . چرا؟
                داخل کد شما w مقداری نداره، فقط یک کاراکتره که داخله حافظه فلشطذخیره و چاگ میشه توسط دستور lcd_putsf
                اونچيزي که در دانشگاه ياد ميگيريد، "الفبايي" هست براي نوشتن يک "رمان" !!

                دیدگاه


                  #9
                  پاسخ : تبدیل یک ارایه به یک عدد

                  نوشته اصلی توسط بابابرقـی
                  داخل کد شما w مقداری نداره، فقط یک کاراکتره که داخله حافظه فلشطذخیره و چاگ میشه توسط دستور lcd_putsf
                  عذر میخوام متوجه منظورتون نشدم w که میخوام w چاپ شه اما بعد w باید عدد 1234 چاپ شه که 0 چاپ میشه
                  حتی این کد اولیه هم کار نمیکنه .
                  کد:
                  char ss[4]={1,2,3,4};
                      int num;
                    num=atoi(ss);
                    sprf(lcd,"",num);
                    lcd_clr();
                    lcd_putsf(lcd); 
                    delay_ms(100);
                  خروجی 0 در صورتی که باید 1234 باشه
                  اشکهايي که پس از هر شکست ميريزيم همان عرقيست که براي پيروزي نريخته ايم.
                  هيتلر

                  دیدگاه


                    #10
                    پاسخ : تبدیل یک ارایه به یک عدد

                    نوشتم تابعشو . حتی اگه تو ارایه کاراکتر خالی هم باشه ساپورت میکنه خودش خالیارو حذف میکنه :applause: :applause: :wow:
                    همونجوری مجبور شدم sprintf رو خودم بنویسم atoi هم تقریبا خودم کاراشو کردم
                    اینم کد
                    کد:
                    char ss[20]={1,2,3,4};
                    /////////////////////////////////
                     int r=20;
                      int t=1;
                      int onum=0;
                      int num=0;
                      int i;
                      for(i=19;!ss[i];i--); 
                      for(r=i;r>=0;(r--)&&(t=t*10))
                        {  
                          onum=0;
                          onum=t*ss[r];
                          num=onum+num;
                        }
                      sprf(lcd,"",num);
                      lcd_clr();
                      lcd_putsf(lcd); 
                      delay_ms(100);
                    اشکهايي که پس از هر شکست ميريزيم همان عرقيست که براي پيروزي نريخته ايم.
                    هيتلر

                    دیدگاه

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