מעבר לתוכן

לוח מובילים

  1. Silvia Elena

    Silvia Elena

    פטרון הפורום


    • נקודות

      7

    • הודעות

      23,638


  2. GothMetalGecko

    GothMetalGecko

    Members


    • נקודות

      4

    • הודעות

      23,549


  3. gin&tonic

    gin&tonic

    פטרון הפורום


    • נקודות

      4

    • הודעות

      1,525


  4. מצמצמת

    מצמצמת

    Members


    • נקודות

      3

    • הודעות

      9,242


תוכן פופולרי

הצגת תוכן המדורג ביותר 10/02/14 בתוך הודעות

  1. x ו-y יציינו שני אינדקסים שיצביעו על מקום מסוים במערך, כאשר x יהיה תמיד לפני y. אפשר להבין את זה מכך שx נקבע ל-0 ו-y נקבע לn-1, וכן מכך שהתנאי בwhile הגדול הוא שx<y. ה-while הפנימי פועל כל עוד שארית החלוקה ב-z היא 0, כלומר כל עוד האיבר מתחלק ב-z. אז כל עוד האיבר מתחלק בz ללא שארית, מסתכלים על האיבר הבא. באופן דומה, בשורה הבאה, ככל שהאיבר שהפעם משאיר שארית בחלוקה בz, נסתכל על האיבר הקודם (האינדקסים x,y יתקרבו אחד לשני). לאחר שנתקלנו באיבר שלא מתחלק ב-z מצד שמאל (ע"י X) ובאיבר שמתחלק ב-z מצד ימין (ע"י Y), שתי הלולאות הקטנות הסתיימו ונבצע החלפה בין האיברים. למשל, הצעד הראשון שנעשה על b הוא הבא: הפעם z=3 ולכן נדבר על שארית חלוקה ב-3. 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 9 2 3 4 5 6 7 8 1 0 9 2 3 4 5 6 7 8 1 0 9 2 3 4 5 6 7 8 1 0 9 2 3 4 5 6 7 8 1 0 9 6 3 4 5 2 7 8 1 . . . כאשר כל שורה מציינת שינוי במערך, המודגש הוא המיקום של X והקו התחתון הוא המיקום של Y. בין שורה 1 ל-2, X מתקדם. Y לא מתקדם כי 9 כבר מתחלק ב-3 ואז מתבצעת החלפה (שורה 3). לאחר מכן, X מתקדם עד ל-2 שאינו מתחלק ב-3, וY מתקדם עד ל-6 שכן מתחלק ב-3. לאחר מכן ישנה החלפה בין 6 ל-2. וכן הלאה.
    1 point
  2. צריך למיין את התווים במחרוזת כאשר אסור למספר האיטרציות בלולאה להיות תלוי באורך הקלט, וכן אסור שמשתני עזר יהיו תלויים באורך הקלט אלא קבועים מראש. השיטה שבה משתמשים פה היא לעבוד תחת ההנחה שאם מדובר במחרוזת, אז היא מערך של chars שהטווח שלו הוא בסך הכל 0 עד 255 (בunsigned), או שבסך הכל יש לנו 256 תווים אפשריים. המיון מתבצע באופן הבא: ראשית, מגדירים מערך באורך 256 (N) שהתא ה-i בו יכיל את מס' ההישנויות של תו מספר i במחרוזת. שנית (המחרוזת הראשונה): עוברים פעם אחת על המחרוזת. לכל תו בה, מעלים ב-1 את המקום ה- s ddd במערך, וזה נכון כי בC התו הוא לא יותר מאשר מספר בין 0 ל-255 אז אפשר להשתמש בו כך או כך. כעת יש לנו כבר את התווים שהיו נוכחים במחרוזת s המקורית, עם מספר החזרות של כל אחד מהם. בלולאה השלישית, משתמשים במערך שיצרנו ודורסים את s באופן הבא: עוברים לפי הסדר על התאים במערך שיצרנו, ומדפיסים ב-s תו כמספר הפעמים שהוא מופיע (זו הלולאה הפנימית).
    1 point
×
×
  • יצירת חדש...