ABA


"שאלה ב C++ המרת צאר לאינט"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15757 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15757
kutumaster 
חבר מתאריך 19.9.06
19325 הודעות
   20:45   10.03.10   
אל הפורום  
  שאלה ב C++ המרת צאר לאינט  
 
   האם יש דרך להמיר צאר לאינט, אבל בלי הOTOI
אלא בדרך בלי פונקציות?
תודה מראש

בברכה,


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

  האשכול     מחבר     תאריך כתיבה     מספר  
  מכתב ldan192  10.03.10 21:54 1
     ואיי אני מסתבך עם זה :\ kutumaster  10.03.10 22:16 2
         / DLN 10.03.10 23:30 3
             תודה אחי kutumaster  11.03.10 16:24 4
                 אגב טעות שלי ששמתי לב אליה DLN 11.03.10 19:37 5
                     תודה אח שלי kutumaster  11.03.10 19:56 6

       
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   21:54   10.03.10   
אל הפורום  
  1. מכתב  
בתגובה להודעה מספר 0
 

int i;
char c = 'a';
i = int(c);

להכניס char ל-int זה לא בעייה כי char זה בייט אחד ו-int זה 4.
להיפך - זה בעייתי ואתה עלול לקצץ את 3 הבייטים העליונים.


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
kutumaster 
חבר מתאריך 19.9.06
19325 הודעות
   22:16   10.03.10   
אל הפורום  
  2. ואיי אני מסתבך עם זה :\  
בתגובה להודעה מספר 1
 
   3. עליך לכתוב פונקציה שמממשת פעולות חשבונית – חיבור – במספרים שלמים וחיוביים הגדולים מ- 4294967295 (שלא "נכנסים" לטיפוס unsigned int). הפונקציה מקבלת את שני המספרים בתור שני מערכים של char. הפרמטר הנוסף בפונקציה הוא המערך השלישי של char בו תרשם תוצאת החישוב.
לדוגמה, אם

char a = {“1234567899987654321”};
char b = {“9874561231236547898”};
תוצאת החיבור היא:
c = {“11109129131224202219”}

עליכם ליצור מסגרת של תוכנית (פונקציית main) בה המשתמש יכניס שני מספרים גדולים בני 20 ספרות כל אחד. הקלט יהיה כמקשה אחת כמחרוזת. אחרי הרצת הפונקציה עליכם להדפיס את התוצאה כאשר אין להדפיס אפסים בתחילת המספר. ניתן להניח כי הקלט תקין (אם כי ייתכן שפעול יוכנס מספר עם אפסים בתחילתו – לדוגמא 00000000000000000005)

יש לך רעיון אחי?

בברכה,


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
DLN
חבר מתאריך 20.4.07
15884 הודעות
   23:30   10.03.10   
אל הפורום  
  3. /  
בתגובה להודעה מספר 2
 
   בASCII הערכים של המספרים נופלים על טווח ה0x30-0x39, משמע הספרה 9 בASCII בזכרון תופיע כ0x39.
משמע, אם תקח CHAR יחיד ותפחית ממנו 0x30, תקבל את הספרה.
בגלל שמתעסקים פה במספרים עצומים ואני לא רואה שמבקשים ממך לשמור את התוצאה בזכרון, הנה קוד שאמור לסדר אותך



char a[] = "1234567899987654321";
char b[] = "9874561231236547898";
char c[] = "0000000000000000000";
/* Asserting that len(a) == len(b) */
int i = 0;
int carry = 0;
int a_index = 0;
int b_index = 0;
int add_result = 0;
for ( i = strlen(a) ; i > 0; --i ) {
a_index = (int)a[i-1] - 0x30;
b_index = (int)b[i-1] - 0x30;
add_result = a_index + b_index + carry;
if (10 <= add_result) {
/* Not sure how neccesary this is */
carry = add_result / 10;
add_result = add_result - (10*carry);
}
c[i-1] = (char)(add_result + 0x30)
}

printf("%s", c);




                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
kutumaster 
חבר מתאריך 19.9.06
19325 הודעות
   16:24   11.03.10   
אל הפורום  
  4. תודה אחי  
בתגובה להודעה מספר 3
 
   זה עדיין עושה בעיות אבל זה הכיוון
הוספתי גם איפוס לשארית, אחרת אם אין צורך הוא עדיין מוסיף את השארית המהספר הקודם, אבל אני עדיין תקוע, לא מבין למה זה לא פועל לי.
נשבור את הראש עוד קצת
תודה רבה אחי!

בברכה,


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
DLN
חבר מתאריך 20.4.07
15884 הודעות
   19:37   11.03.10   
אל הפורום  
  5. אגב טעות שלי ששמתי לב אליה  
בתגובה להודעה מספר 4
 
   שזה כותב רק 20 תווים במקסימום ואתה מאבד את הCARRY האחרון, אז עוד נקודה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
kutumaster 
חבר מתאריך 19.9.06
19325 הודעות
   19:56   11.03.10   
אל הפורום  
  6. תודה אח שלי  
בתגובה להודעה מספר 5
 
   כבר פתרתי את זה בדרך הכי לא אלגנטית שאפשר
יומים שרפתי על זה

בברכה,


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

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

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



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