אלגוריתם יעיל להפיכת סדר מילים במשפט

משפ פלד

New member
אלגוריתם יעיל להפיכת סדר מילים במשפט

שאלו אותי בראיון עבודה וקצת גמגמתי, משתף אתכם איך הופכים את סדר המילים במשפט ללא שימוש במבנה נתונים נוסף לדוגמא: חיים אבי אברשה משה -> משה אברשה אבי חיים xyz d f trv --> trv f d xyz שרון
 

Maha Vailo

New member
אפשר

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

asm32

New member
סתם כי שיעמם לי

void str_invert(char src[],char *dest) { __asm { xor ecx,ecx mov esi,src getl: cmp byte ptr [esi+ecx],0h je endlen inc ecx jmp getl endlen: mov edi,dest push ecx invs: lodsb mov byte ptr [edi+ecx-1],al loop invs nextw: xor edx,edx xor ecx,ecx push edi nxtc: dec byte ptr [esp+4h] jz ends cmp byte ptr [edi+ecx+1],20h jbe endw inc ecx inc edx jmp nxtc endw: mov al,byte ptr [edi] mov ah,byte ptr [edi+ecx] mov byte ptr [edi+ecx],al mov byte ptr [edi],ah inc edi sub ecx,2h cmp ecx,1h js ergg jae endw ergg: pop edi add edi,2h add edi,edx jmp nextw ends: add esp,8h } }​
 

asm32

New member
הסבר למה שעשיתי

1)אני לוקח את גודל כל המשפט ושומר אותו 2)אני הופך את כל המשפט 3)אני עובר מילה מילה במשפט והופך את סדר האותיות שמה,במשך התהליך הזה אני מחסר את גודל המשפט שמגיעים ל0 הפונקציה מסתיימת
 
למעלה