PDA

View Full Version : تابع strlen و strcmp به صورت بازگشتی



Azar.099
یک شنبه 01 دی 1392, 13:41 عصر
سلام دوستام
میخوام توابع strlen & strcmp را به صورت بازگشتی بنویسم
میشه لطفا کمکم کنین ...

sr2m72
یک شنبه 01 دی 1392, 18:47 عصر
سلام دوستام
میخوام توابع strlen & strcmp را به صورت بازگشتی بنویسم
میشه لطفا کمکم کنین ...

سلام
تابع strlen به صورت بازگشتی:

int strlen(char* s,int len=0)
{
if (s[len] == '\0')
return len;
len++;
return strlen(s,len);
}


موفق باشید//

Azar.099
یک شنبه 01 دی 1392, 18:57 عصر
ممنونم
برای تابع strcmp میشه کمکم کنید
نوشتم ولی نمیدونم درسته یا نه ..

int compareReshte(char s[], char d[])
{
int static i = 1;
while(s!=0 )
{
if(s[i]>d[i])
return 1;
if(s[i]<d[i])
return -1;
if(d[i] == s[i])
{
i++;
compareReshte(s,d);
}
if( s == d)
return 0;
}

}

sr2m72
یک شنبه 01 دی 1392, 19:17 عصر
ممنونم
برای تابع strcmp میشه کمکم کنید
نوشتم ولی نمیدونم درسته یا نه ..

int compareReshte(char s[], char d[])
{
int static i = 1;
while(s!=0 )
{
if(s[i]>d[i])
return 1;
if(s[i]<d[i])
return -1;
if(d[i] == s[i])
{
i++;
compareReshte(s,d);
}
if( s == d)
return 0;
}

}

اینم strcmp

int i = 0;
int compareReshte(char* s, char* d)
{
while(s[i] != '\0' )
{
if(s[i]>d[i])
return 1;
else if(s[i]<d[i])
return -1;
else
{
i++;
return compareReshte(s,d);
}
}
return 0;
}


موفق باشید//

Azar.099
یک شنبه 01 دی 1392, 19:56 عصر
ازتون بسیار ممنونم. :لبخندساده:

karimi72
دوشنبه 02 دی 1392, 07:57 صبح
دوست عزیز کد شما یک مشکل منطقی داره اونم اینه که هیچ وقت i از یک جلو تر نمی ره
ولی برا sr2m72 (http://barnamenevis.org/member.php?202223-sr2m72) متغییر iعمومی است پس امکان تغییر را دارد