תעזרו לי בבקשה בכתיבת פונקציה

emmasky33

New member
תעזרו לי בבקשה בכתיבת פונקציה

.יש לקלוט מהמשתמש מספר שלם חיובי ולייצר מספר חדש המכיל רק את הספרות שבמיקומים הזוגיים. מיקומה של הספרה הימנית ביותר הוא 0. דוגמא: עבור המספר 12345 יש לייצר את המספר 135.

נראה לי שאני לא בכיוון... מישהו יכול בבקשה לעזור?
 

BravoMan

Active member
ומה בדיוק ניסית שנראה לך שאת לא בכיוון?

במה את מתקשה בדיוק?
&nbsp
אם את מחפשת פתרון מוכן לשיעורי בית, הגעת למקום הלא נכון!
 

emmasky33

New member
תשובה

אני בלימוד עצמי - אין לי ממש שיעורי בית...
&nbsp
זה מה שאני עשיתי וזה מחזיר לי רק ספרה אחת:
&nbsp
int zugi (int n)
{ int result;
&nbsp
while (n>0)
{
result=(n%10);
if (i%2==0)
{
return result;
i++;
}
}
 

BravoMan

Active member
זה לא אמור להחזיר לך כלום

היות ולא הגדרת את i בשום מקום.
&nbsp
היית אמורה לקבל שגיאת קומפילציה.
&nbsp
אם נניח ש-i קיים ובטעות לא העתקת אותו לפורום, את צריכה להבין שברגע שקוראים לאופרטור return הפונקציה מיד מסיימת את פעולתה.
&nbsp
זו המשמעות של return - סיימתי, תחזור לפונקציה קודמת.
&nbsp
לכן, הקוד שלך, ברגע שיגיע לספרה זוגית ראשונה, יסיים את פעולתו.
&nbsp
מה שאני מציע שתעשי, זה קודם כל תרשמי פסודו קוד.
כלומר, תחשבי מה הפעולות שאת צריכה לעשות, ואז תרשמי אותן שורה שורה בעברית.
&nbsp
תציגי כאן, נראה אם זה נכון, ואז נעזור לך לתרגם את זה לקוד אמתי.
&nbsp
בהצלחה!
 

emmasky33

New member
אוקיי

אז זה התהליך שאני רוצה לעשות:
- הפונקציה מביאה לי מספר n בעל ספרות מסוים
for (int i=0; 0<n; i++)
- int result=n%10;
-if (i%2==0)
printf ("%d",i)
&nbsp
הבעיה שלי היא לחבר את כל הספרות האלו ביחד...
&nbsp
 

BravoMan

Active member
את שוב מנסה לרשום קוד במקום פסודו קוד.

בואי נסתכל ביחד מה צריך לעשות:
&nbsp
1. צריך לבודד את הספרה "הנוכחית" של המספר.
את זה את מנסה לעשות ע"י n % 10 אבל הבעיה היא שאת דורסת את התוצאה הקודמת במקום להוסיף אליה.
&nbsp
2. בעיה נוספת היא שאת מבצעת את הדריסה בכל מקרה, בין אם הספרה הנוכחית זוגית, ובין אם לא.
&nbsp
3. את לא משנה את המספר שאת עובדת עליו (n). את תמיד לוקחת את הספרה הכי ימנית שלו, אבל זו גם תמיד תהיה אותה ספרה.
&nbsp
יצרת לולאה אין סופית שלעולם לא תסתיים.
&nbsp
אז, איך אמור להיראות פסודו קוד?
1. האם הספרה הנוכחית זוגית?
1.1 - כן - הוסף את הספרה הנוכחית למספר נצבר
1.2 - לא? על תעשה כלום
2. הורד את הספרה הנוכחית מהמספר שבודקים.
&nbsp
בתרגיל הזה יש קושי אחד קטן - את מנסה לשמור על סדר הספרות לאחר ההורדה, וזה אומר שבכל פעם שאת רוצה להוסיף ספרה זוגית למספר החדש את צריכה להוסיף אותה במקום שונה, במקום בהתחלה.
&nbsp
כדי לפתור זאת, את צריכה לדעת באיזה מקום במספר החדש את נמצאת, ולהכפיל את הספרה החדשה ב-10 מספיק פעמים כדי להגיע למקום הזה.
 
למעלה