ABA


"בעיה ב-C בנושא פונקציות/מחרוזות"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #7160 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 7160
shay_ziv

   13:57   20.10.03   
אל הפורום  
  בעיה ב-C בנושא פונקציות/מחרוזות  
 
   היי חברים..נתקלתי ב-2 שאלות שאני לא מצליח לפתור..אני די מסתבך אפילו בהתחלה.
אשמח אם מישהו יוכל לעזור:
1.כתוב פונקציה אשר מקבלת מספר טבעי כלשהו שאינו מכיל אפסים.
הפונקציה צימטר מהפרמטר שהטעבר שני מספרים חדשים ותחזיר את סכומם.
מספר אחד נוצר ע"י כתיבת כול הספרות הזוגיות המופיעות בפרמטר על פי סדר הופעתן, ומספר שני נוצר ע"י כתיבת כול הספרות האי זוגיות המופיעות בפרמטר ע"פ סדר הופעתן
דוגמא:אם הפרמטר המועבר לפונקציה הוא 5243617 אז המספרים שנוצרו הם
246 ו-5317
וסכומם הוא 5563
הפונקציה תחזיר 5563

2.כתוב תוכנית הקולטת 10 מחרוזות למערך של מחרוזות.התוכנית תדפיס את המחרוזת שבה הרצף הגדול ביותר של תווים זהים וכן את מיקום המחרוזת בקלט (ראשונה,שנייה,וכו')

בבקשה תעזרו -בכול דרך..ובבקשה שלא יבואו המתנשאים שאני מבקש ת'תשובה או משהו-ממש לא...
תודה לכוווולם


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  אנשים בבקשה כנסו-התחלתי לפתור shay_ziv 20.10.03 16:33 1
     אני לא חושב שאתה סגור על עצמך liranr 20.10.03 18:22 2
         אחי? shay_ziv 20.10.03 18:40 3
             בבקשה-שאלה2 shay_ziv 20.10.03 20:12 4
  עוד שאלה מנילי ... eliran33 20.10.03 22:30 5
     חח אין בעיה אחי shay_ziv 20.10.03 22:33 6

       
shay_ziv

   16:33   20.10.03   
אל הפורום  
  1. אנשים בבקשה כנסו-התחלתי לפתור  
בתגובה להודעה מספר 0
 
   אז ככה-התחלתי לכתוב את הקוד(שאלה 1)וחילקתי את הקוד ל-3 פונקציות
אחת ששומרת את האחדות כול פעם
אחת שבודקת אם הוא זוגי
ואחת שבונה את המספר
ככה זה נראה...אני אשמח אם תוכלו לעזור
int divide( int num)
{
int temp;
while(num)//while not zero
{
temp=num%2;//saves the AHADOT digit
num/=10;//divide by 10

int zugi(int num)
{
int x;
x=(num%2==0)?(1):(0);//if the number is zugi or not
}
int build(int num,num2)
{
if zugi(num);
num1 = num1 * 10 + tmp;
else
num2 = num2 * 10 + tmp;


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
liranr

   18:22   20.10.03   
אל הפורום  
  2. אני לא חושב שאתה סגור על עצמך  
בתגובה להודעה מספר 1
 
   עם מה אתה מנסה לעשות.
בוא ניקח לדוגמא את הפונקציה הראשונה שלך.
היא מקבלת מספר, ומחזירה מה? את ספרת האחדות שלו? אותו מספר אבל הפוך?

קוד קצת יותר קצר וטוב (לא בטוח שיותר יעיל) יהיה אפשר לכתוב ככה:

long reverse(long num)
{
long temp=0;
while (num>0)
{
temp = temp*10 + (num%10);
num = num / 10;
}
return temp;
}

long function(long num)
{
long temp,num1=0,num2=0;
for (temp=num ; temp>0 ; temp = temp / 10)
if (temp%2==0)
num1 = num1*10 + temp%10;
else
num2 = num2*10 + temp%10;
return reverse(num1)+reverse(num2);
}


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
shay_ziv

   18:40   20.10.03   
אל הפורום  
  3. אחי?  
בתגובה להודעה מספר 2
 
   שאני רק יבין מה עשית-זאת כול התוכנית?!?!כול שאלה 1?
כאילו מבחינת הפונקציות אני מדבר לא מבחינת ה-MAIN
כי אני הבנתי ש עושים ככה:
פונקציה לפירוק מספר
פונקציה שתבדוק אם הוא זוגי או לא
וזהו


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
shay_ziv

   20:12   20.10.03   
אל הפורום  
  4. בבקשה-שאלה2  
בתגובה להודעה מספר 3
 
   שאלה 1 סגורה ועובדת...תודה רבה לך על העזרה

עכשיו הבעיה היא שאלה 2..והבעיה היא-שאסור להשתמש בפוינטרים.אחרת כבר הייתי פותר את זה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
eliran33

   22:30   20.10.03   
אל הפורום  
  5. עוד שאלה מנילי ...  
בתגובה להודעה מספר 0
 
   אתה אמרת שאם היה אפשר להשתמש בפוינטרים אז הייתי מצליח את זה כבר ...
המימוש אותו הדבר כמעט בפוינטרים או במערך סטטי של תווים ...
הלוגיקה זהה .

אני עכשיו עובד ישר לקטע של האלגוריתם , אני מדלג על הקטע של קליטת הנתונים ... אתה תסתדר לבד , לא אחי ?

זה אמור להיות ככה ...

התוכנית תהיה בנויה משתי לולאות . אחת בתוך השניה .
החיצונית תרוץ 10 פעמים , עבור כל מחרוזת במערך , והפנימית תרוץ N פעמים .
N = גודל המחרוזת הנוכחית .
כמובן שאתה צריך משתנה שיכיל את המיקום במחרוזת עם הרצף הגדול , ועוד משתנה שיכיל את מספר המחרוזת במערך כדי שתדע מה להציג בסוף .

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

יש לך פה המון משתנים זמניים ולמרות שלא מתייחסים אל זה למתחילים יחסית זה עלול לבלבל ...

אז פה אני מציע באמת שתחשוב טוב טוב לפני שאתה נותן שם למשתנה ... אפילו אם הוא יצא ארוך לאללה ... עדיף לעשות אותו ארוך מאוד אבל מובן .

מקווה שתסתדר ... וד"ש לנילי ...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
shay_ziv

   22:33   20.10.03   
אל הפורום  
  6. חח אין בעיה אחי  
בתגובה להודעה מספר 5
 
   ערכתי לאחרונה בתאריך 20.10.03 בשעה 22:36 בברכה, shay_ziv
 
מתי אתה למדת אצלה?
תראה אני מעדיף בלי פוינטרים-כאילו אסור...

עכשיו לדעתי צריך לחלק את זה לכמה נקודות-מציאת רצף במחרוזת-וכול כמות רצף לשים במערך
אח"כ-פונקציה אחרת שמוצאת את המקסימלי במחרוזת
ופונקציה אחרונה-שרצה על כול הרצף של המחרוזות ומוצאת את המקסימום
אז הנה לדעתי ככה צריכה להראות הפונקציה הראשונה-שמוצאת רצף במחרוזת-מה דעתכם?
עוד משו-איך רושמים את זה כאילו בתוך תיבת טקסט-כי ככה זה לא מובן
קוד:
int retsef(char string)
{
int i=0;
int j;
int counter;
int vec;
while(string)
{
if(string==string)
{
counter++;
}
vec=counter;
i++;
j++;
}


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net