ABA


"לא מצליח לחשוב על דרך איך לעשות תוצאה של מכפלה ב JAVA"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15330 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15330
Ice_Man
חבר מתאריך 14.11.05
1161 הודעות
   13:20   29.05.09   
אל הפורום  
  לא מצליח לחשוב על דרך איך לעשות תוצאה של מכפלה ב JAVA  
 
   אני צריך לעשות את השיטה הזאת:

LongInteger multiply(LongInteger other)
Multiply the current long integer by the other one.
Returns a new LongInteger that represents the result.

אם התוצאה של המספר הראשון כפול המספר השני קטן מ-11 ספרות אז זה לא בעייה. ברגע שהתוצאה 11 ספרות ומעלה זה ממציא לי מספר.
למשל:
100000*10000=1000000000 - שזה בסדר. אבל:
1000000*10000=1410065408 - זאת התוצאה על פי הקומפיילר, שזה כבר בעייה.

גם אם אשתמש בלונג זה לא יעזור לי, כי יכול להיות לי מספר בן 20 ספרות.


"שימו לב,
. • אתם יכולים להניח כי אורך (מספר הספרות) כל מספר במחלקה חסום על-ידי 20"

"שימו לב שאורך כל מספר בקלט חסום על-ידי 20 . מה זה אומר לגבי חסם על האורך של
תוצאת המכפלה?"

אסור לי ליבא שיטות מבחוץ.

תודה


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

  האשכול     מחבר     תאריך כתיבה     מספר  
  אממ akoka 29.05.09 14:39 1
  הרעיון שתבנה מחלקה מתאימה. Deuce  29.05.09 18:07 2
     אני לא רואה איך הוא מייצג את זה בסופו של דבר כמספר, akoka 29.05.09 18:14 3
         מה הכוונה לייצג את זה כמספר? Deuce  29.05.09 18:18 4
             אני פשוט לא רואה איך אתה עובד עם akoka 29.05.09 19:15 5
                 שוב פעם קסמים חח? Deuce  29.05.09 20:52 6
  תודה. בינתיים לפחות הצלחתי לעשות פעולת חיבור :) Ice_Man 01.06.09 13:13 7
     העיקר שנהנים, לא? :) Deuce  01.06.09 16:58 8
         תודה. לקראת שנה הבאה אעדכן אותך אם הצלחתי את הכפל ;) Ice_Man 01.06.09 17:41 9
             הצלחתי ! Ice_Man 03.06.09 17:51 10

       
akoka

   14:39   29.05.09   
אל הפורום  
  1. אממ  
בתגובה להודעה מספר 0
 
   אתה יכול להשתמש בBigInteger.

http://java.sun.com/j2se/1.4.2/docs/api/java/math/BigInteger.html

ואחרי זה לעשות לו Casting לType רגיל.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Deuce 
חבר מתאריך 1.9.08
6225 הודעות
   18:07   29.05.09   
אל הפורום  
  2. הרעיון שתבנה מחלקה מתאימה.  
בתגובה להודעה מספר 0
 
זה לא מסובך, תייצג מספר על ידי מערך בגודל 30 תאים (תחשוב למה זה חסם מתאים למכפלה של 2 מספרים בגודל 20).
המספר 1352346262 למשל ייוצג על ידי מערך כך ש:

A[19] = 2
A[10] = 1
A[9] = 0
...
A[0] = 0
ובאופן כללי:
A[20-(i+1)] = Digit at ith

כאשר הספרה במקום ה-ith נספרת משמאל לימין, כלומר הספרה ה-0 היא ספרת האחדות.

וכעת אתה צריך להגדיר כפל בהינתן 2 מספרים שמיוצגים על ידי מערכים וזאת תעשה כמובן באמצעות כפל ארוך.

בהצלחה !






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

   18:14   29.05.09   
אל הפורום  
  3. אני לא רואה איך הוא מייצג את זה בסופו של דבר כמספר,  
בתגובה להודעה מספר 2
 
   הוא ייצטרך לאחד את הכול לString ואז לעשות Casting, פעולות קצת יקרות.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Deuce 
חבר מתאריך 1.9.08
6225 הודעות
   18:18   29.05.09   
אל הפורום  
  4. מה הכוונה לייצג את זה כמספר?  
בתגובה להודעה מספר 3
 
מחרוזת היא לא מספר.
זה טיפוס נתונים שעובד עם מספרים קצת יותר גדולים.
במידה וצריך, תהיה פעולה toString שמחזירה את זה כמחרוזת.






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

   19:15   29.05.09   
אל הפורום  
  5. אני פשוט לא רואה איך אתה עובד עם  
בתגובה להודעה מספר 4
 
   מערך של ספרות, בתור מספר שלם אחד, בלי לרוץ על כול המערך בO של n ספרות.
אני חושב שBigInteger פשוט עושה את זה בצורה שונה, ויעילה יותר.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Deuce 
חבר מתאריך 1.9.08
6225 הודעות
   20:52   29.05.09   
אל הפורום  
  6. שוב פעם קסמים חח?  
בתגובה להודעה מספר 5
 
או שתדע איך זה עובד או שאל תניח הנחות.
המון מחלקות בדרך כלל לא ממומשות בכלל בצורה יעילה.

בכל אופן, זאת דרך מספיק יעילה וזאת בעייה בסה"כ פשוטה - אין טעם להכנס אליה יותר מידי.






                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ice_Man
חבר מתאריך 14.11.05
1161 הודעות
   13:13   01.06.09   
אל הפורום  
  7. תודה. בינתיים לפחות הצלחתי לעשות פעולת חיבור :)  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 01.06.09 בשעה 13:41 בברכה, Ice_Man
 
אם מישהו רוצה לצחוק עלי זה לקח לי איזה 6 שעות עד שזה עבד לגמריי.
להגנתי יאמר שאין לי רקע בתיכנות והתחלתי ללמוד רק במרץ מדעי המחשב באונברסיטה הסגורה...
וזה אכן עובד. סתם בגדול אם אני לוקח 2147483647 ומוסיף לו בפשטות 2147483647 אמורה להיות לי שגיאה בהרצה כי אני חורג מההגבלה של ה INT. בגלל זה צריך לסדר כל מספר בתוצאה במערך.בגלל זה זה יותר קשה ממה שזה נשמע למתחילים.

הייתי צריך לעשות מטודה של חיבור ושל כפל, עשיתי חיבור.
בטח כפל יקח לי 3 שבועות.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Deuce 
חבר מתאריך 1.9.08
6225 הודעות
   16:58   01.06.09   
אל הפורום  
  8. העיקר שנהנים, לא? :)  
בתגובה להודעה מספר 7
 
בהצלחה שיהיה.






                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ice_Man
חבר מתאריך 14.11.05
1161 הודעות
   17:41   01.06.09   
אל הפורום  
  9. תודה. לקראת שנה הבאה אעדכן אותך אם הצלחתי את הכפל ;)  
בתגובה להודעה מספר 8
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Ice_Man
חבר מתאריך 14.11.05
1161 הודעות
   17:51   03.06.09   
אל הפורום  
  10. הצלחתי !  
בתגובה להודעה מספר 9
 
   ערכתי לאחרונה בתאריך 03.06.09 בשעה 18:04 בברכה, Ice_Man
 
אפילו תוצאה שגדולה מ 2147483647 מיוצגת בתוך מערך !

אחד הדברים הקשים


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

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

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



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