PDA

View Full Version : سوال: معکوس کردن جمله به روش بازگشتی



reza_jolie
دوشنبه 11 آذر 1387, 10:28 صبح
این برنامه باید از کاربر یه جمله رو که به نقطه ختم میشه رو بخونه و به روش بازگشتی اونو برعکس کنه. اما نمی دونم چرا موقع فراخوانی مجدد تابع ارور میده. لطفا راهنمایی کنید.


#include<iostream.h>
#include<conio.h>
char s[30];
void f(int a, int b)
{
char t;
if(a<b)
{
t=s[a];
s[a]=s[b];
s[b]=t;
f(a++,b--);
}
else
return;
}
main()
{
int i;
cout<<"enter a sentence:\n";
cin.get(s,30,'.');
for(i=0;s[i]!='\0';i++);
f(0,i);
cout<<s;
getch();
}


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

Nima_NF
دوشنبه 11 آذر 1387, 15:36 عصر
// ...
f(++a,--b);
}
else
return;
}
int main()
{
// ....
f(0, --i );

cout<<s;
getch();
return 0;
}

-در فراخوانی اول باید یک واحد از i کم شود یا حداقل تا قبل از آن شمارش شود تا کارکتر انتهای رشته را ارسال نکنیم 0\

- از عملگرها -- و ++ باید قبل از متغیر ها استفاده کنید تا قبل از ارسال به تابع افزایش یابند

huni_1989
دوشنبه 11 آذر 1387, 17:07 عصر
برای این کار تابع باید از n کارکتر موجود n-1 تا رو بگیره. اگه تعداد n-1 بزرگتر از 2 بود خودش رو برای n-1 صدا بزنه و بعد کارکتر nام رو ببره آخر همه ی جمله ها.