ABA


"שאלה (בעיה) בקשר למחרוזות בשפת C"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #8542 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 8542
BubbleBoy

דרג אמינות חבר זה
   15:30   12.12.02   
אל הפורום  
  שאלה (בעיה) בקשר למחרוזות בשפת C  
 
   יש לי לדוגמא קטע קוד כזה:

char *hex = "4C91";
int dec=0 , i;

dec += atoi(hex)*pow(16,i);

עכשיו הבעיה היא שאת המספר 4 זה עובד בסדר.
אבל החל מהספרה 9 הוא קורא את כל המחרוזת (עד שיש אות כלשהי)
כלומר הוא מחשב לי את המספר 91 במקום רק את 9 ואח"כ רק את 1.

מישהו יודע מה עושים?
תודה מראש.


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

  האשכול     מחבר     תאריך כתיבה     מספר  
  בכל שורה יש בעיה Boaz_fr 12.12.02 15:55 1
     לגבי i : זה בלולאה, שכחתי לרשום אותה ו.. BubbleBoy 12.12.02 16:12 2
         אני היתי כותב את זה אחרת ... Boaz_fr 12.12.02 16:38 3
             עכשיו זה בכלל לא פועל :( BubbleBoy 12.12.02 16:42 4
                 בבקשה Boaz_fr 12.12.02 17:55 5
                     תודה שוב, אבל הוא לא מוכן להתקמפל, BubbleBoy 12.12.02 18:02 6
                         סליחה Boaz_fr 12.12.02 18:19 7
                             עדיין לא מתקמפל :\ BubbleBoy 12.12.02 18:26 8
                                 אחי, ללמוד תכנות מסתכם בנסיון וטעיה Boaz_fr 12.12.02 18:37 9
                                     תודה רבה על העזרה :) BubbleBoy 12.12.02 18:45 10

       
Boaz_fr

דרג אמינות חבר זה
   15:55   12.12.02   
אל הפורום  
  1. בכל שורה יש בעיה  
בתגובה להודעה מספר 0
 
   עבר עריכה לאחרונה בתאריך 12.12.02 בשעה 15:56
 
א. אתה מגדיר מצביע למחרוזת ואתה מנסה להכניס לתוכו מחרוזת
אתה חייב לבצע הקצה דימנית או להגדיר אותו סטטי
לא ניתן להכניס מחרוזת למערך בעמצאוצ השמה =
ב. הפונקציה atoi מקבלת מחרוזת עשרונית לא הקסדצימלית
ג. אתה מנסה להעלות חזקה של 16 ב i כאשר i לא מאותחל

דוגמה להכנסת נתונים למחרוזת


s22Boaz_frs33

http://rotter.net/User_files/nor/3df895691fd56e6a.txt


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

דרג אמינות חבר זה
   16:12   12.12.02   
אל הפורום  
  2. לגבי i : זה בלולאה, שכחתי לרשום אותה ו..  
בתגובה להודעה מספר 1
 
   לא הבנתי מה שרשמת בסעיף ב.

העליתי לכאן את כל הקוד אם תוכל לומר לי מה הבעיה אני אשמח מאוד.
http://rotter.net/User_files/nor/3df899273b315898.txt


תודה רבה.


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

דרג אמינות חבר זה
   16:38   12.12.02   
אל הפורום  
  3. אני היתי כותב את זה אחרת ...  
בתגובה להודעה מספר 2
 
   אבל חוץ מכמה בעיות (הקצאה דינמית מיותרת, אין delete ..) זה בסדר

לגבי atoi זאת פונקציה שמקבלת מחרוזת לא תו בודד (מחרוזת נגמרת ב NULL)
מה שאני מציע לך במקום השורה


dec += atoi(hex)*pow(16,i);

תרשום


dec += *hex - 48 * pow(16,i);

s22Boaz_frs33


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

דרג אמינות חבר זה
   16:42   12.12.02   
אל הפורום  
  4. עכשיו זה בכלל לא פועל :(  
בתגובה להודעה מספר 3
 
   אם תוכל להריץ ולראות מה בדיוק הבעיה זה יהיה מצוין

ד"א, מדוע ההקצאה הדינמית מיותרת?
הרי אתה אמרת לי, בכל מקרה,
אז מתי צריך להקצות דינמית ומתי לא?


ד"א,
תודה רבה רבה על ההיענות.


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

דרג אמינות חבר זה
   17:55   12.12.02   
אל הפורום  
  5. בבקשה  
בתגובה להודעה מספר 4
 
   הקצאה דינמנית מבצעים רק שהגודל לא ידוע

http://rotter.net/User_files/nor/3df8b1525af368d3.txt

s22Boaz_frs33


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

דרג אמינות חבר זה
   18:02   12.12.02   
אל הפורום  
  6. תודה שוב, אבל הוא לא מוכן להתקמפל,  
בתגובה להודעה מספר 5
 
   עבר עריכה לאחרונה בתאריך 12.12.02 בשעה 18:06
 
הוא אומר שיש בעיה בשורה:
dec += ((hex - 48)*pow(16,i));

שהיא:
Error: noname01.cpp(30,33):Illegal use of pointer



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

דרג אמינות חבר זה
   18:19   12.12.02   
אל הפורום  
  7. סליחה  
בתגובה להודעה מספר 6
 
  
http://rotter.net/User_files/nor/3df8b71c018d69f8.txt


s22Boaz_frs33


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

דרג אמינות חבר זה
   18:26   12.12.02   
אל הפורום  
  8. עדיין לא מתקמפל :\  
בתגובה להודעה מספר 7
 
   הבעיה:
Error: noname01.cpp(14,54):Lvalue required

הוא אומר בשורה הזאת:
for(i=strlen(hex)-1 ; (i>=0) && (*hex) ; i-- , hex++)

או כנראה בשורה הזאת:
strcpy(hex, "4C91");


יש לך מושג מה זה יכול להיות אולי?


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

דרג אמינות חבר זה
   18:37   12.12.02   
אל הפורום  
  9. אחי, ללמוד תכנות מסתכם בנסיון וטעיה  
בתגובה להודעה מספר 8
 
   אבל אם אתה מתעקש...

זה מתקמפל אצלי, ונותן תשובה נכונה


http://rotter.net/User_files/nor/3df8bb351efe7cba.txt


s22Boaz_frs33


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

דרג אמינות חבר זה
   18:45   12.12.02   
אל הפורום  
  10. תודה רבה על העזרה :)  
בתגובה להודעה מספר 9
 
  


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

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

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



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