קטע קוד ב c\c++

ogispan

New member
קטע קוד ב c\c++

שלום לכולם!!!!! אני יודע שהבקשה שלי היא גדולה מידיי... לכן אני רוצה להדגיש כבר מראש שלמרות שאני מעוניין לקבל כמה שיותר חומר- אני עדיין אודה לכל מי שיעזור לי אפילו בחלק קטן מהבעיה. אז ככה, אני צריך קטע קוד בשפת c\c++ שעושה את הדבר הבא: פותח קובץ מסויים שבו יש מספר שורות (נגיד n שורות), כאשר בכל שורה יש 5 מילים המופרדות ע"י ; (נקודה-פסיק). התוכנית ממיינת את השורות לפי המילה הראשונה בכל שורה, ואחר כך עושה מיון מישני לפי המילה השנייה בכל שורה. את המיון הראשון עושים בשיטת quick sort ואת המיון השני בשיטת merge sort אודה לכם על כל חלקיק של מידע (או קוד עצמו) על איך לעזזל עושים את זה...
 

selalerer

New member
ובכן...

1.פותחים את הקובץ לקריאה. 2.עושים פונקציה שמחזירה את המילה הX בשורה הY. 3.ממיינים ע"פ המילה ה1 את השורות בQS. 4.תוך כדי המיון בQS אתה בודק כל פעם האם השורה הקודמת ששמת יש לה את אותה מילה ראשונה כמו השורה הזאת ואם כן אז ממיין לך את שתי השורות הללו ע"פ המילה השנייה. וזה נראה לי הכל. לא ממש קשה לחשוב על זה בעצמך, תתחיל לכתוב ותראה לנו מה יצא לך ולמה זה לא פועל. ואם יש משהו ספציפי פה שאתה לא יודע לעשות (כמו לכתוב תוכנה בC++) אז תשאל. הרבה בהצלחה, סלע.
 

selalerer

New member
באג מס' 1:

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

gmorphus

New member
טיפ

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

ogispan

New member
אנשים! המון תודה.....

אבל לא לזה התכוונתי עוד אין לי תוכנית שעושה משהו וזה לא יוצא לי... כי אין לי מושג אפילו איך כותבים את זה... אני צריך להגיש את העבודה הזאת אחרי פסח, ואני אפילו לא יודע איך מתעסקים עם קבצים ב C++ המרצה שלנו במיכללה מטורף... החליט שאנחנו יודעים מספיק בשביל לכתוב דבר כזה... כל התלמידים עדיין בהתאוששות... אני צריך כמה שיותר קיטעי קוד... למשל את הפונקציה עצמה שממיינת לי ב QS או את הפונקציה שפותחת קובץ ובוחרת את המילה ה X מהשורה ה Y. תבינו שאין לי מושג איך לעשות את זה ב C++ ושוב... המון תודה שאתם מנסים לעזור לנואש כמוני!!! :)
 

selalerer

New member
חבוב, את זה לא תקבל.

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

ogispan

New member
כן....

היתה לי הרגשה שמה שאני מבקש זה מוגזם.... אבל בכל זאת חשבתי שאם כבר יש למישהו פה קטע קוד שעושה מיון- אז אולי לא יהיה אכפת לו להתיק לי אותו לפה בפורום... ברור שאני לא מצפה מכם לכתוב לי את העבודה... כל הבקשה שלי היא שאם כבר יש לך איזה תוכנית שמשתמשת ב QS.... בכל מיקרה.... תודה רבה על העזרה :)
 

DadleFish

New member
גם את זה לא תקבל פה,

אבל אם תחפש QuickSort ברשת, וגם MergeSort, תמצא עשרות קטעי קוד שמיישמים את זה.
 
למעלה