עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

עזרה בבניית פונקציה רקורסיבית בשפת 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;
}

ארכיון

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

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.