اطلاعیه

Collapse
No announcement yet.

string

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

    string

    سلام دوستان گل
    مشکل این برنامه کجاست میخوام یه رشته ثابت و یه رشته که از ورودی پر میشه رو با هم مقایسه کنم ولی هیچ موقع یکسان نمی شه یا بزرگتره یا کوچکتر :eek:
    لطفا کمک کنید همه کاری هم کردم حتی ته رشته 1 رو هم با صفر می بستم ولی ....
    ورودیاز صفحه کلید

    کد:
    void main(void)
    {
    char key_p,x=0,buffer[16];
    int result=3;
    char str1[6]="",str2[]="11111";
    lcd_init(16);
    while (1)
       {
       lcd_gotoxy(0,0);
       lcd_putsf("enter code:");
       key_p=scan_key();
       if((key_p==0||key_p==1||key_p==2||key_p==3||key_p==4||key_p==5||key_p==6||key_p==7||key_p==8||key_p==9)&&x<5){
        key_p=scan_key();
        lcd_gotoxy(x+11,0);
        str1[x]=key_p;
        delay_ms(150);
        sprintf(buffer,"%d",str1[x]);
        lcd_puts(buffer);
        delay_ms(150);
        x++;
       }
       if(x==5){
        result=strcmp(str1,str2);
        if(result==0){
        lcd_clear();
        lcd_putsf("yes");
        delay_ms(1000);
       }
       if(result==-1||result==1) {
       lcd_clear();
        lcd_putsf("no!");
        delay_ms(1000);
        x=0;
       }
    }
     }
     }


    #2
    پاسخ : string

    دوستان لطفا کمک کنید پروژه ناتمومه :cry2: فقط تنها مشکلم همینه نمی دونم به هیچ راهی درست بشو نیست oo:

    دیدگاه


      #3
      پاسخ : string

      برای استفاده از تابع strcmp باید ته رشته را با کاراکتر
      کد:
      \.
      ببندی

      دیدگاه


        #4
        پاسخ : string

        منظورم کاراکتر بک اسلش و صفر بود که سایت چپه نشون داد.
        مشکلات زبان فارسیه دیگه

        دیدگاه


          #5
          پاسخ : string

          حالا که ادیتور سایت اذیت میکنه اینجوری بنویس

          str[end]=0;

          که str همون رشته است و end آخرین خونه رشته (یکی بعد از آخرین کاراکتر)رو مشخص میکنه

          دیدگاه


            #6
            پاسخ : string

            ممنون :job:
            مثلا از قبلا دستور ( strcat(str1,0 ولی فرقی نکرد ! به نظرم رشته در یافتی پشت سر هم قرار نمی گیره :eek:بازهم دوستان به دقت مطالعه کنند مشکل دیگه ای یا راهکاری هست بفرمایید منتظریم

            دیدگاه


              #7
              پاسخ : string

              دستور key_p=scan_key(); بعد از if اضافیه بایستی حذف بشه . در ضمن به نظر میاد x=0 داخل یک if اشتباه قرار گرفته x=0 بلافاصله بعد از if (x==5) قرار بگیره تا گم نشه

              دیدگاه


                #8
                پاسخ : string

                نوشته اصلی توسط gtnfs
                دستور key_p=scan_key(); بعد از if اضافیه بایستی حذف بشه . در ضمن به نظر میاد x=0 داخل یک if اشتباه قرار گرفته x=0 بلافاصله بعد از if (x==5) قرار بگیره تا گم نشه
                خیلی ممنون دوست عزیز باز هم درست نشد! :angry: :angry:
                کد جدید هم به این صورت در اومد
                کد:
                void main(void)
                {
                int key_p, result=3;
                unsigned char buffer[16],x=0; 
                unsigned char str1[6]="";
                unsigned char str2[6]="00000";
                lcd_init(16);
                
                while (1)
                   {
                   lcd_gotoxy(0,0);
                   lcd_putsf("enter code:");   
                   key_p=scan_key();
                   if(key_p>-1&&key_p<10&&x<5){
                    lcd_gotoxy(x+11,0);
                    itoa(key_p,buffer);
                    str1[x]=key_p;
                    delay_ms(150);
                    lcd_puts(buffer);
                    delay_ms(150);
                    x++;
                   }
                   
                   if(key_p==15){
                   x=0;
                    strcat(str1,0x00);
                   delay_ms(5);
                    result=strcmp(buffer,str2);
                    if(result==0){
                    lcd_clear();
                    lcd_putsf("yes");
                    delay_ms(1000);
                   }
                   if(result==-1||result==1) {
                   lcd_clear();
                    lcd_putsf("no!");
                    delay_ms(1000);
                   }
                }      
                 }  
                 }

                نمی دونم کجاش غلطه اخه یه چیز ساده وپیش پا افتادس
                دوستان خواهشا یا این کد رو مورد بررسی قرار بدن :read: یا یه نمونه کد واسمون بزارن

                دیدگاه


                  #9
                  پاسخ : string

                  اصلا این برنامه کار میکنه ؟ اخر برنامه پر از آکلاد بازه

                  دیدگاه


                    #10
                    پاسخ : string

                    اره داداش شما کد رو کپی کن توی یه فایل txt اونوقت بهتر متوجه میشوی هیچ اکلاد بازی هم نداره :agree:
                    در کل از دوستان کسی راه حلی برای مقایسه یه رشته ثابت با یه رشته متغییر نداره!

                    دیدگاه


                      #11
                      پاسخ : string

                      تعریف استرینگ به شکل زیر انجام بشه آرایه str1 تا 11 کاراکتر ظرفیت داره و با اضافه کردن 0 انتهای استرینگ مشخص خواهد شد.
                      char *str1,*str2="00000";

                      راه حل دوم اینه بجای استفاده ازتابع strcmp
                      ،دو آرایه تک به تک در یک حلقه مقایسه بشوند مثلا
                      result=0;

                      for(i=0;i<=4;i++)

                      if( str1[ i] !=str2[ i])

                      {

                      result=1;

                      break;

                      }

                      دیدگاه


                        #12
                        پاسخ : string

                        ممنون دوست عزیز پست مفیدی بود :job:
                        ولی نمی دونم چرا باز هم با تغییر str1 و str2 به رشته تغییری حاصل نشد :angry:

                        دیدگاه


                          #13
                          پاسخ : string

                          نوشته اصلی توسط masoud70
                          2-1437/10/0000215/47--90.11.20 10M EN-GHAV: 01437/05/002102/14
                          ممنون دوست عزیز پست مفیدی بود :job:
                          ولی نمی دونم چرا باز هم با تغییر str1 و str2 به رشته تغییری حاصل نشد :angry:
                          یک برنامه خیلی ساده که در اون استرینگ بجای کیبرد داخل برنامه تعرف شده باشه بنویس تا اصلا معلوم بشه که این روش جواب میده یا نه؟ روش دوم ساده ولی بایستی بجای استرینگ آرایه تعریف بشه و هر عضو ارایه جدا گانه تعریف بشه مثلا
                          str2[0]='0' str[1]='0' ..........str[4]='0'.

                          دیدگاه

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