اطلاعیه

Collapse
No announcement yet.

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

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

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

    سلام

    یه معمای بزرگ :nice: هر چی فکر کردم به نتیجه ای نرسیدم .

    فرض کنید یه رشته به طول 128 بایت داریید و می خواید از داخل این رشته یک سری اعداد رو بیرون بکشید و ، و ، و ، و نمی دونید که اون عدد از کجا شروع میشه و محل این عدد در این رشته ممکنه هر جایی باشه .

    برای مثال می خواید از رشته ی زیر :
    "CREG: 55,24"

    عدد 55 رو که نمی دونید از کجای این آرایه شروع میشه رو در بیارید . لازم به ذکر است که قبل از 55 حتما رشته ی creg وجود داره .

    تشکر از کسایی که منو راهنمایی می کنن .
    و تشکر از همه

    #2
    پاسخ : خواندن یک سری اعداد در یک رشته

    اگه با bascom کار می کنید اول با با استفاده از دستور instr رشته CREG سرچ کن تا شروع عددو بدست بیاری بعد از اون آدرس به بعد یه بار , سرچ کن تا طول عدد به دست بیاری بعد با دستور mid خیلی راحت میتونی مقدارشو به دست بیاری اگه میخوای مقدار استرینگش ام به معدله عددیش تبدیل کنی از دستور val استفاده کن
    اگه با این دستورهای بالا تاحالا کار نکردی تو help اش یه سرچ کنی خیلی کمکت میکنه

    دیدگاه


      #3
      پاسخ : خواندن یک سری اعداد در یک رشته

      نوشته اصلی توسط ali3635
      اگه با bascom کار می کنید اول با با استفاده از دستور instr رشته CREG سرچ کن تا شروع عددو بدست بیاری بعد از اون آدرس به بعد یه بار , سرچ کن تا طول عدد به دست بیاری بعد با دستور mid خیلی راحت میتونی مقدارشو به دست بیاری اگه میخوای مقدار استرینگش ام به معدله عددیش تبدیل کنی از دستور val استفاده کن
      اگه با این دستورهای بالا تاحالا کار نکردی تو help اش یه سرچ کنی خیلی کمکت میکنه
      تشکر علی آقا
      من با bascom کار نمی کنم و نمی تونید همین کار ها رو به زبون c و با تابع های فایل هدر string.h بگید .
      دیگرون کسی دیگه ای به چنین مشکلی بر نخورده .
      :bye

      دیدگاه


        #4
        پاسخ : خواندن یک سری اعداد در یک رشته

        کسی نمیدونه این مشکل رو چه جوری میشه حل کرد :cry:

        دیدگاه


          #5
          پاسخ : خواندن یک سری اعداد در یک رشته

          الگوریتم کاری مهمه که همونیه دوسمون گفت توی Help بگردی پیدا میکنی و البته اون الگوریتم تا زمانی درسته که طول اون چیزی ر که میخوای بدونی اگه همیشه مثل عدد 55 دوتاست درسته در غیر اینصورت باید دنبال الگوریتم دیگه ای بگردی
          معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

          دیدگاه


            #6
            پاسخ : خواندن یک سری اعداد در یک رشته

            نوشته اصلی توسط john lock
            الگوریتم کاری مهمه که همونیه دوسمون گفت توی Help بگردی پیدا میکنی و البته اون الگوریتم تا زمانی درسته که طول اون چیزی ر که میخوای بدونی اگه همیشه مثل عدد 55 دوتاست درسته در غیر اینصورت باید دنبال الگوریتم دیگه ای بگردی
            این الگوریتم اتفاقا همیشه کار میکنه طول عدد هرچقدر باشه

            آقا آرمین تو C معادل این دستورا هست مثلا starpos به جای instr و memcpy به جای mid

            دیدگاه


              #7
              پاسخ : خواندن یک سری اعداد در یک رشته

              نوشته اصلی توسط ali3635
              اگه با bascom کار می کنید اول با با استفاده از دستور instr رشته CREG سرچ کن تا شروع عددو بدست بیاری بعد از اون آدرس به بعد یه بار , سرچ کن تا طول عدد به دست بیاری بعد با دستور mid خیلی راحت میتونی مقدارشو به دست بیاری اگه میخوای مقدار استرینگش ام به معدله عددیش تبدیل کنی از دستور val استفاده کن
              اگه با این دستورهای بالا تاحالا کار نکردی تو help اش یه سرچ کنی خیلی کمکت میکنه
              این دستور instr با بعضی از رشته ها مشکل داره . ( فکر می کنم رشته های بزرگ) باسکام من هم 1.11.9.5 است


              ویرایش توسط خودم :

              دستور مشکل نداره . مشکل از من بود !!!

              دیدگاه


                #8
                پاسخ : خواندن یک سری اعداد در یک رشته

                نوشته اصلی توسط آرمین
                سلام

                یه معمای بزرگ :nice: هر چی فکر کردم به نتیجه ای نرسیدم .

                فرض کنید یه رشته به طول 128 بایت داریید و می خواید از داخل این رشته یک سری اعداد رو بیرون بکشید و ، و ، و ، و نمی دونید که اون عدد از کجا شروع میشه و محل این عدد در این رشته ممکنه هر جایی باشه .

                برای مثال می خواید از رشته ی زیر :
                "CREG: 55,24"

                عدد 55 رو که نمی دونید از کجای این آرایه شروع میشه رو در بیارید . لازم به ذکر است که قبل از 55 حتما رشته ی creg وجود داره .

                تشکر از کسایی که منو راهنمایی می کنن .
                و تشکر از همه
                به سادگی مثلا من تو این قسمت میزان اعتبار رو از تو sms دریافتی در اوردم و به متغیر از نوع long تبدیل کردم
                کد:
                Incr Omid
                If Omid > 16 Then Goto Re2
                N = Mid(rec3 , Omid , 1)
                
                'Cls
                'Home
                'Lcd Eteba
                'Locate 2 , 1
                'Lcd Omid ; "*n:" ; N
                'Waitms 500
                
                
                Select Case N
                Case "0":
                If Omid = 1 Then
                Eteba = 0
                Goto Re
                End If
                Eteba = Eteba * 10
                
                Case "1":
                If Omid = 1 Then
                Eteba = 1
                Goto Re
                End If
                Eteba = Eteba * 10
                Eteba = Eteba + 1
                
                
                Case "2":
                If Omid = 1 Then
                Eteba = 2
                Goto Re
                End If
                Eteba = Eteba * 10
                Eteba = Eteba + 2
                
                Case "3":
                If Omid = 1 Then
                Eteba = 3
                Goto Re
                End If
                Eteba = Eteba * 10
                Eteba = Eteba + 3
                
                Case "4":
                If Omid = 1 Then
                Eteba = 4
                Goto Re
                End If
                Eteba = Eteba * 10
                Eteba = Eteba + 4
                
                Case "5":
                If Omid = 1 Then
                Eteba = 5
                Goto Re
                End If
                Eteba = Eteba * 10
                Eteba = Eteba + 5
                
                Case "6":
                If Omid = 1 Then
                Eteba = 6
                Goto Re
                End If
                Eteba = Eteba * 10
                Eteba = Eteba + 6
                
                Case "7":
                If Omid = 1 Then
                Eteba = 7
                Goto Re
                End If
                Eteba = Eteba * 10
                Eteba = Eteba + 7
                
                Case "8":
                If Omid = 1 Then
                Eteba = 8
                Goto Re
                End If
                Eteba = Eteba * 10
                Eteba = Eteba + 8
                
                Case "9":
                If Omid = 1 Then
                Eteba = 9
                Goto Re
                End If
                Eteba = Eteba * 10
                Eteba = Eteba + 9
                
                
                Case Else:
                Goto Re
                
                End Select
                Goto Re
                
                Re2:
                Cls
                Lcdat 5 , 1 , "ETEBA:" ; Eteba
                علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

                دیدگاه


                  #9
                  پاسخ : خواندن یک سری اعداد در یک رشته

                  یه تابع براتون نوشتم.
                  بهش یه String ورودی میدین
                  اولین عدید در اونرو پیدا میآ‌کنه و خروجی میده.
                  و اگر عددی پیدا نکرد ، مقدار 1- رو برمیآ‌گردونه.

                  کد PHP:
                  int find_number(char *str){
                      
                  int ijcount=0;
                      
                  char num_str[10];
                      
                      
                  strlen(str);
                      for(
                  i=0&ltji++){
                          if( *
                  str >= '0' && *str <= '9' ){
                              
                  num_str[count] = *str;
                              
                  count++;
                              if( *(
                  str+1) < '0' || *(str+1) > '9' ){
                                  
                  break;
                              }
                          }
                          
                  str++;
                      }
                      
                  num_str[count] = 0;

                      
                      if( 
                  count &gt){
                          return 
                  atoi(num_str);
                      }else{
                          return -
                  1;
                      }



                  یه نمونه طرز استفاده از این تابع :
                  کد PHP:
                  #include <stdio.h>
                  #include <string.h>
                  #include <stdlib.h>

                  char str[] = {"CREG55,24"};

                  int main(void){
                      
                  int i;
                      
                      
                  i=find_number(str);
                      
                      
                  printf("%d\n", );
                      return 
                  0;



                  در اثر اجرای کد بالا ، عدد 55 در خروجی چاپ میشه ( یا بدست میاد )
                  چگونه هوشمندانه بپرسیم

                  دیدگاه

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