اطلاعیه

Collapse
No announcement yet.

سوال در مورد آرایه ها و تبدیل کاراکتر به عدد

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

    سوال در مورد آرایه ها و تبدیل کاراکتر به عدد

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

    راستش میخوام یک عدد مثل 123 رو از ورودی بگیرم و بریزم تو یک آرایه ... که این عدد در آرایه باید بصورت زیر ریخته بشه :



    یعنی اینکه عدد یکان ( که 3 هست ) باید در آخرین خونه از آرایه قرار بگیره و ...

    و نکته دیگه اینکه عدد ریخته شده تو آرایه بصورت کاراکتر شناخته میشه ( شبیه '3&#039 و باید اونو به عدد تبدیل کرد ( فقط در این حد میدونم که باید تک تک اونارو منهای 48 کرد )

    اگه از دوستان کسی منو راهنمایی کنه ممنون میشم ... با تشکر
    از سختی نترس! این سختی هاست که جایگاه و مقام انسان را بالا میبرد...

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

    یک روش معمول برای بدست آوردن تک تک ارقام یک عدد، تقسیمات متوالی به 10 است. مثلا عدد 1234 با تقسیم بر 10 دارای باقیمانده 4 و خارج قسمت 123 خواهد شد که 4 در باقیمانده نشان دهنده رقم یکان است. با تقسیم مجدد 123 بر 10، باقیمانده برابر 3 می شود که همان عدد دهگان است و خارج قسمت 12 می شود. تقسیم مجدد 12 بر 10 دارای باقیمانده 2 و خارج قسمت 1 می شود که باقیمانده رقم صدگان و خارج قسمت نهایی رقم هزارگان خواهد بود.
    اوژن: به معنای افکننده و شکست دهنده است
    دانایی، توانایی است-Knowledge is POWER
    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

    دیدگاه


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

      نوشته اصلی توسط طراح
      یک روش معمول برای بدست آوردن تک تک ارقام یک عدد، تقسیمات متوالی به 10 است. مثلا عدد 1234 با تقسیم بر 10 دارای باقیمانده 4 و خارج قسمت 123 خواهد شد که 4 در باقیمانده نشان دهنده رقم یکان است. با تقسیم مجدد 123 بر 10، باقیمانده برابر 3 می شود که همان عدد دهگان است و خارج قسمت 12 می شود. تقسیم مجدد 12 بر 10 دارای باقیمانده 2 و خارج قسمت 1 می شود که باقیمانده رقم صدگان و خارج قسمت نهایی رقم هزارگان خواهد بود.
      با تشکر از پاسختون ... روش جالب و پرکاربردیه

      ولی منظورم تبدیل کاراکتر به عدد هست ... مثلا یک آرایه ای تعریف کردیم مثل [char temp[n وقتی که از ورودی 123 رو بگیریم و تو این آرایه بریزیم ، اونو به عنوان کاراکتر ذخیره خواهد کرد ... حالا من دنبال روشی هستم که اونو به عدد تبدیل کنم و تو یک آرایه دیگه ای بریزم ... توی کتاب مهندس جعفرنژاد قمی ، برای این منظور 48 واحد از تک تک کاراکتر های '0' تا '9' کم میکرد تا تبدیل به اعداد 0 تا 9 شوند ... ولی من چیزی متوجه نشدم
      از سختی نترس! این سختی هاست که جایگاه و مقام انسان را بالا میبرد...

      دیدگاه


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

        اقا خوب چرا از تابع atoi یا atof استفاده نمی کنید . من قبلا برای keil اینو نوشتم به دردت می خوره بزارم .

        دیدگاه


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

          نوشته اصلی توسط مهدی کربلایی
          اقا خوب چرا از تابع atoi یا atof استفاده نمی کنید . من قبلا برای keil اینو نوشتم به دردت می خوره بزارم .
          داداش نیکی و پرسش :biggrin: کارم بدجور گیر اینه ...
          از سختی نترس! این سختی هاست که جایگاه و مقام انسان را بالا میبرد...

          دیدگاه


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

            ببخشید من هوسم نبود برای معکوسش رو نوشتم
            اینو داشته باش تا برات ارایه به عدد هم بنویسم .

            کد:
            void int_to_aray (char *ram_str,unsigned int i)
            {
            char temp1[12],j,k;
            unsigned int a=0;
            a=i;
            for (j=0;j<22;j++)
            {
            k = a % 10;	temp1[j]=k+0x30;
            a = a / 10; if (a==0) {temp1[++j]='\0'; j = 24;}
            }
            k=strlen(temp1);
            for(j=0;j<strlen(temp1);j++)
             { 
              ram_str[j]=temp1[--k];
             }
            ram_str[strlen(temp1)]= '\0'; 
            }

            دیدگاه


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

              یه سوال حالا چرا از توابع ماده داخل C استفاده نمی کنی .

              دیدگاه


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

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

                کد:
                unsigned int array_to_int (char *in_str) {
                 
                 char c1,str_lenth,flag_end;
                 unsigned int number=0;
                 
                 c1=0; 
                 str_lenth=strlen(in_str); 
                 flag_end=1;
                 
                 while (flag_end) 
                 {
                  number += in_str[c1]; c1++; 
                  if (c1 == str_lenth) {flag_end=0;} 
                  else {number *= 10;}
                 }
                 return number;
                }

                دیدگاه


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

                  دست شما درد نکنه
                  من برم روش کار کنم ببینم چی میشه...
                  بازم ممنون
                  از سختی نترس! این سختی هاست که جایگاه و مقام انسان را بالا میبرد...

                  دیدگاه


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

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

                    دیدگاه


                      #11
                      پاسخ : سوال در مورد آرایه ها و تبدیل کاراکتر به عدد

                      آقا دست شما درد نکنه ... حالا بهتر شد ... یه ساعت داشتم برنامه رو دیکد میکردم :mrgreen:
                      از سختی نترس! این سختی هاست که جایگاه و مقام انسان را بالا میبرد...

                      دیدگاه


                        #12
                        پاسخ : سوال در مورد آرایه ها و تبدیل کاراکتر به عدد

                        اقا ببخشید خوابیده بودم یادم افتاد که تو برنامه می بایتسی که از هر کدام از کاراکتر ها مقدار 30 هگز یا 48 دسیمال رو کم کنی . بعد بریزی داخل متغییر number .

                        دیدگاه


                          #13
                          پاسخ : سوال در مورد آرایه ها و تبدیل کاراکتر به عدد

                          void setup()
                          {
                          Serial.begin(115200);
                          Serial.println("START");
                          }


                          void loop()
                          {
                          if(Serial.available())
                          {
                          char c = Serial.read();
                          Serial.print(c);
                          }

                          }

                          دوستان این برنامه ای هستش که توسط سریال اردوینو کارکتر به صورت R0 تا R255 دریافت میشه مشکلم اینه نمیتونم R رو حذف کنم و کارکتر های عددی رو به int تبدیل کنم که بشه مثلا 0 تا 255 ممنون میشم راهنمایی کنید.

                          دیدگاه


                            #14
                            پاسخ : سوال در مورد آرایه ها و تبدیل کاراکتر به عدد

                            نوشته اصلی توسط farzad_TKI نمایش پست ها
                            void setup()
                            {
                            Serial.begin(115200);
                            Serial.println("START");
                            }


                            void loop()
                            {
                            if(Serial.available())
                            {
                            char c = Serial.read();
                            Serial.print(c);
                            }

                            }

                            دوستان این برنامه ای هستش که توسط سریال اردوینو کارکتر به صورت R0 تا R255 دریافت میشه مشکلم اینه نمیتونم R رو حذف کنم و کارکتر های عددی رو به int تبدیل کنم که بشه مثلا 0 تا 255 ممنون میشم راهنمایی کنید.
                            سلام
                            با این کد شما دارید یک کاراکتر میخونید میریزد داخل متغیر c و فقط نمایشش میدید. اگر رشته شما مثلا به صورت "R123" باشه، باید 4 بایت داده دریافت کنید و کاراکتر اولش که R باشه صرف نظر کنید. 3 کاراکتر بعدی رو باید دونه به دونه تبدیل به عدد کنید. یک نمونه کد ساده اینجا میذارم براتون:

                            char c[5];
                            int n;


                            for(int i=0; i<4; i++)
                            {
                            while (Serial.available() != true);
                            c[i] = Serial.read();
                            }


                            n = (c[1] - '0') * 100;
                            n += (c[2] - '0') * 10;
                            n += (c[3] - '0');
                            جدیدترین ویرایش توسط hossein.m98; ۲۱:۲۳ ۱۳۹۹/۱۲/۲۳.

                            دیدگاه

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