פורסם 2011 ביוני 914 שנים אהלן ,צריך קצת את עזרתכם,קצת הסתבכתי.נתון לי קובץ שבו יש שמות מוצרים וליד כל מוצר יש מחיר מסויים של המוצר דוגמא:a220ac450we420aa450vv025ודרוש ליצור שני קבצים אחד של מחירים יחודיים שלא חוזרים על עצמם והשני מחירים החוזרים על עצמם.הקבצים מסודרים בסדר עולה ממחיר נמוך לגבוה.תודה לכל מי שעוזר.
פורסם 2011 ביוני 914 שנים מחבר *שים לב שערכתי את ההודעה.מה שחשבתי לעשות זה לרוץ פעמיים כל הקובץ:פעם אחת אני סורק את המחיר המינימליפעם שנייה בודק אם הוא חוזר יותר מפעם אחת ואם כן אני מזין את המחיר של המוצר לקובץ של הכפילויות (לקובץ הזה יוזן רק מחיר ולא שמות המוצרים). אם לא אז אני מזין את המוצר לקובץ של המחיר היחודי.ולאחר מכן מוחק את כל המוצרים בעלי המחיר הזה מהקובץ הראשי...
פורסם 2011 ביוני 914 שנים מחבר הקובץ הראשי לא ממויין זה כל הקטע...אוקיי יצא לי ארוך ומייגע אבל בסופו של דבר עשיתי לפי האלגוריתם שחשבתי, חשבתי שיהיה לכם איזשהו אלגוריתם קצר להציע,אבל בקטנה...רק שאלה קטנה אם אפשר לעזור,איך אני נמנע מלפתוח קובץ שכבר פתוח או לסגור קובץ שכבר סגור? כי הבנתי שזה נותן שגיאת ריצה ...
פורסם 2011 ביוני 1014 שנים האלגוריתם לפתרון הוא:1. פתח את הקובץ.2. קרא את כל השורות של הקובץ לתוך מערך (זה יכול להיות מערך של מחרוזות, או של struct שמייצג מוצר ע"י השם והמחיר שלו).3. סגור את הקובץ.4. מיין את המערך לפי המחירים (או באמצעות פונקציית qsort הקיימת בחבילה הסטנדרטית של C, או באמצעות פונקציית מיון משלך).5. העתק את המערך לשני מערכים - אחד יכיל את כל המוצרים שמחירם ייחודי, ואחד שיכיל את כל המוצרים שהמחיר חוזר על עצמו. כיוון שהמערך המקורי ממויין לפי המחירים, זה יהיה אלגוריתם די פשוט.6. כתוב כל אחד מהמערכים החדשים לתוך קובץ נפרד.רק שאלה קטנה אם אפשר לעזור,איך אני נמנע מלפתוח קובץ שכבר פתוח או לסגור קובץ שכבר סגור? כי הבנתי שזה נותן שגיאת ריצה ...אתה יכול לבדוק אם הפתיחה של הקובץ עברה בהצלחה (לפי ערך ההחזרה של הפונקציה). אם אתה היחיד ששולט בפתיחה והסגירה של הקבצים, אז אתה לא אמור להגיע למצב כזה בכלל...
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.