char *add_str (char *num1,char num*2) C languge - עמוד 2 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

char *add_str (char *num1,char num*2) C languge


man with no name

Recommended Posts

תחשוב איך עושים חיבור ארוך, צעד אחרי צעד.

תרשום את הצעדים אחד אחד (איפה מתחילים? מתי מפסיקים?, מה חוזר על עצמו? מה לא?), על דף, עד שאתה סגור לגמרי שכיסית את כל המקרים.

ותרגם את זה לקוד.

זהו, סיימת

קישור לתוכן
שתף באתרים אחרים


char * add_str (char *num1, char *num2)
{
int l1= strlen(num1);
int l2= strlen(num2);
int newsize=0;
int i=0,j=0;
int carry=0,x=0;
char temp,temp2;
char *newstr;
if(l1 >= l2)
newsize=l1+2;
else
newsize = l2+2;
newstr=(char*)calloc(newsize , sizeof(char));

for(i = newsize-2 ; i>=0 ; i--)
{


x = num1[i]-'0' + num2[i]-'0' + carry ;
if(x>9){
carry = 1 ;
newstr[i+1] = x%10 + '0' ;
}
else{
carry=0 ;
newstr[i] = x+'0' ;
}


}
if(carry){
for(i=0; i < strlen(newstr) ; i++){
temp = newstr[i+1] ;
newstr[i+1] = newstr[i] ;
newstr[i]=temp;



}
newstr[0] = '1';
}
//newstr[0]= carry + '0' ;
newstr[newsize+1] = '\0' ;
return newstr;

חבר'ה יש למישהו משהו יותר אלגנטי?

קישור לתוכן
שתף באתרים אחרים

הרעיון מוצלח, אבל יש לך כמה באגים פה ושם.

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

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...