PDA

View Full Version : تابع برگشتی



mononok
جمعه 13 اردیبهشت 1387, 07:24 صبح
سلام
من میخواهم با استفاده از تابع برگشتی معکوس یه رشته رو حساب کنم
تو یه خط از برنامه مشکل دارم ؟؟؟؟؟؟؟؟؟؟؟واون اینه که می خواهم حرف آخر رو از رشته حذف کنم و بعد بقیه رشته رو دوباره به تابع ارسال کنم
چطور حرف آخر رو می تونم حذف کنم؟

#include <stdio.h>
#include <conio.h>
#include <string.h>
void rev(char s[]);
void main(void)
{
char c[10];
clrscr();
printf("enter word:");
scanf("%s",c);
rev(c);
getche();
}
//-------------------------------
void rev(char s[])
{
int a=0;
a=strlen(s);
if(a==1)
printf("%s",s);
if(a>1)
printf("%c",s[a-1]);
?????????????
rev(s);
}

A_Salimi
جمعه 13 اردیبهشت 1387, 16:01 عصر
سلام

من برنامه رو به این صورت تغییر دادم البته ماهیت تابع بازگشتی همچنان حفظ شده است :




#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream.h>
int a;
int i=0;
void rev(char s[]);
void main()
{
char c[10];
clrscr();
printf("enter word:");
scanf("%s",c);
rev(c);
cout<<endl;
exit(0);
getch();
}
//-------------------------------
void rev(char s[])
{
a=strlen(s);
a=a-i;
printf("%c",s[a-1]);
i++;
if(a>1)
rev(s);

}

emad_67
جمعه 13 اردیبهشت 1387, 16:25 عصر
قسمت مربوط به تابع بازگشتی رو خیلی ساده تر به این شکل هم می تونی بنویسی:


void rev(char *s)
{
if(*(s+1))
rev(s+1);
cout<<*s;
}

mononok
شنبه 14 اردیبهشت 1387, 19:04 عصر
بچه ها از جوابتون ممنون ولی من تازه c خوندن رو شروع کردم میشه به من بگید این تیکه زیر یعنی چی؟!

cout<<endl;
در ضمن emad_67 عزیز من نمی خواهم اصلا از اشاره گر ها استفاده کنم از کمکتون ممنون.

emad_67
شنبه 14 اردیبهشت 1387, 19:45 عصر
بچه ها از جوابتون ممنون ولی من تازه c خوندن رو شروع کردم میشه به من بگید این تیکه زیر یعنی چی؟!

cout<<endl;
endl کرسر رو می بره ابتدای خط بعد و بافر خروجی رو هم خالی میکنه.