PDA

View Full Version : معکوس کردن رشته



www.ilampro.com
شنبه 17 مرداد 1388, 14:08 عصر
سلام دوستان حالتون چطوره؟
ایا تابعی در سی پلاس وجود داره که رشته رو معکوس کنه
ممنون

tdkhakpur
شنبه 17 مرداد 1388, 14:41 عصر
مگه دکتری؟


char ch, *str={"how hre you"};
int len=strlen(str);
for(int i=0; i<len/2; i++) {
ch = str[i];
str[i] = str[len-1-i];
str[len-1-i]= ch;
}

کد بالا را خودت تابعش کن.

www.ilampro.com
شنبه 17 مرداد 1388, 21:27 عصر
سلام دوست عزیز
ممنون از اینکه سریع جواب دادی.دوتا سوال :

1-اگر طول کلمه مورد نظر نامعلوم باشه چطور کد رو تغییر بدیم

2-من با استفاده از فارسی ساز سپند یک برنامه نوشتم که در محیط خروجی سی پلاس میتونید فارسی تایپ کنید فایل فارسی ساز رو همراه برنامه بعدا upload میکنم
تمام فایل های با نام فارسی ساز رو در پوشه سی پلاس paste کنید. چون کیفیت چاپ کاراکتر های فارسی خوب نیست و اونها رو درست به هم نمی چسبونه
مجبورم حروف کلمه رو از اخر به اول تایپ کنم. من می خوام حروف هر کلمه رو به ترتیب تایپ کنم طوری که درست به هم بچسبند لطفا منو راهنمایی کنید

tdkhakpur
شنبه 17 مرداد 1388, 22:03 عصر
سلام
سوال دوم شما را متوجه نشدم ولی برای سوال اولتان همان کد فوق را با استفاده از تابع به کار ببرید.


void ReversStr(char *str, int len)
{
for(int i=0; i<len/2; i++) {
ch = str[i];
str[i] = str[len-1-i];
str[len-1-i]= ch;
}
}

حالا میتوانید با تابع با رشته یا متغییر با طول مشخص کار کنید.

shs_night
یک شنبه 18 مرداد 1388, 01:08 صبح
ایا تابعی در سی پلاس وجود داره که رشته رو معکوس کنه

بله تابع ()strrev این کار رو میکنه
و اینهم پیاده سازیش:


char *MyStrrev ( char *str )
{
char *start, *left, ch ;
start = left = str;

while( *str++ ) ;

str -= 2;
while( left < str )
{
ch = *left;
*left++ = *str;
*str-- = ch;
}
return( start );
}




اگر طول کلمه مورد نظر نامعلوم باشه چطور کد رو تغییر بدیم

تابع فوق هیچ نیازی به پاس کردن طول رشته ندارد

www.ilampro.com
یک شنبه 18 مرداد 1388, 03:49 صبح
ممنون دوست عزیز

www.ilampro.com
دوشنبه 19 مرداد 1388, 19:22 عصر
دوست عزیز لطفا برنامه رو نگاه کن