עבור לתוכן

עזרה בבניית פונקציה רקורסיבית בשפת C

Featured Replies

פורסם

שלום.

אני צריך לבנות פונק' רקורסיבית. המקבלת את המחרוזת הראשית, ושתי מחרוזות נוספות "ריקות", ומפרידה את האותיות והספרות לשתי מחרוזות, האחת של אותיות והשנייה של ספרות.

הנה מה שכתבתי אך זה לא עובד בכלל ואני לא מוצא את הבעייה..

תודה לעוזרים.


#include<stdio.h>
#include<conio.h>
#include<string.h>
void F_String(char *st,char *st1,char *st2)
{
if(*st=='\0')
{
*st1='\0';
*st2='\0';
return;
}
else if(*st>='A'&&*st<='Z'||*st>='a'&&*st<='z')
{
*st1=*st;
st++;
}
else
{
*st2=*st;
st2++;
}
F_String(st,st1,st2);
}
int main()
{
char st[101]={0},st1[101]={0},st2[101]={0};
printf("Enter string: ");
gets(st);
F_String(st,st1,st2);
puts(st1);
getch();
return 0;
}





פורסם

קודם כל, תערוך בבקשה את ההודעה ותדאג להזחה נכונה של הקוד. קשה מאוד להבין מה קורה שם כרגע.

חוץ מזה, השורה הראשונה (אחרי ה-while) היא return, אז איך אתה מצפה שהקוד יעבוד?

פורסם
  • מחבר

קודם כל, תערוך בבקשה את ההודעה ותדאג להזחה נכונה של הקוד. קשה מאוד להבין מה קורה שם כרגע.

חוץ מזה, השורה הראשונה (אחרי ה-while) היא return, אז איך אתה מצפה שהקוד יעבוד?

ערוך והתוכנית השתנתה

פורסם

קודם כל בגלל שזה רקורסיה שעוברת על המחרוזת,

אתה צריך לקדם את המצביע שלך בקריאה הרקורסיבית

F_String(st+1,st1,st2);

במקרה ונמצא אות, אתה צריך לקדם את המצביע למחרוזות של האותיות במקום המצביע למחרוזת הכללית.

טיפ קטן, עדיף שתתן שמות עם משמעות למשתנים שלך, ככה יהיה לך קל יותר לראות את הטעויות שלך.

פורסם
  • מחבר

קודם כל בגלל שזה רקורסיה שעוברת על המחרוזת,

אתה צריך לקדם את המצביע שלך בקריאה הרקורסיבית

F_String(st+1,st1,st2);

במקרה ונמצא אות, אתה צריך לקדם את המצביע למחרוזות של האותיות במקום המצביע למחרוזת הכללית.

טיפ קטן, עדיף שתתן שמות עם משמעות למשתנים שלך, ככה יהיה לך קל יותר לראות את הטעויות שלך.

תודה. עזרת לי. מצאתי את השגיאה.

ובכל זאת אוסיף את הקוד לכל המעוניין:


#include<stdio.h>
#include<conio.h>
#include<string.h>
void F_String(char *st,char *st1,char *st2)
{
if(*st=='\0')
{
*st1='\0';
*st2='\0';
return;
}
else if(*st>='A'&&*st<='Z'||*st>='a'&&*st<='z')
{
*st1=st[0];
st1++;
}
else
{
*st2=st[0];
st2++;
}
F_String(st+1,st1,st2);
}
int main()
{
char st[101]={0},st1[101]={0},st2[101]={0};
printf("Enter string: ");
gets(st);
F_String(st,st1,st2);
puts(st1);
puts(st2);

getch();
return 0;
}

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים