![]() |
עזרה במיון ספרות
היי אני צריך עזרה במיון ספרות
יש לי את הבעיה הבאה: בנה תוכנית אשר תמיין את הספרות במספר מהקטן לגדול לדוגמא: Enter number: 2974 The number: 2479 אסור להשתמש במערכים, מותר רק לולאות.. הבעיה כאן שאני לא יודע כל כך איך בכלל להתחיל את זה אז אם מישהו יתן לי כיוון אני יודה לו מאוד תודה |
באיזה שפה?
בעיקרון אתה יכול ללכת באופן רקורסיבי, כי אתה לא יודע באיזה גודל המספר, וחלק כל פעם ב10 וככה לבודד את המספר ואז לעבור במיון בועה או איך שזה לא נקרא שמחליף מיקומים סמוכים אם השני גדול מהראשון. |
המספר חייב להיות 4 ספרתי?
|
המספר שאתה קולט , אתה קולט אותו כSTRING או כINT/DOUBLE?
ועוד שאלה , האם המספר חייב להיות דו ספרתי ? "הנחה"? עריכה: ראיתי את התגובה שלך, אני אנסה עכשיו למדת רקורסיה? |
המספר יכול להיות בכל גודל שהוא, הייתי צריך לציין את זה
לדוגמה 35326543 נקבל 23334556 והשפה היא C אם אפשר גם איזה רעיון עם PHP זה יכול לעזור תודה :} דור אני קולט אותו כINT וגם לא למדתי רקורסיה |
פיתרון
היי ,
זה בשפת סי שארפ אולי תבין עשיתי מהר כי אני ממהר לבית כנסת *יכול להיות שיש דרך יותר יעילה *אם למדת רקורסיה אחר כך אני אגיד לך מה צריך לעשות קוד:
static void Main(string[] args) |
ציטוט:
זה נותן 29621 במקום 12269 תודה על הניסיון לעזור |
אה,
סליחה... חשבתי מספר הפוך מצטער... כשאחזור אכתוב לך |
שלום אשמח לעזור לך,
בעיקרון קודם כל עלייך להבין את דרך הפתרון. סה"כ כל מה שאתה צריך לעשות זה לדעת לפרק את המס' ומפה הדרך ממש קלה. אני אכתוב לך את העיקרון בC שארפ ואני מקווה שתבין. קוד:
int maxnum=0; הסבר פשוט של מה שעשיתי לקחתי משתנה איפסתי אותו והוא ישמש בתור מי שישמור את המספר הגדול ביותר וככה תדע מי הכי גדול |
תראה יש הרבה דרכים לעשות את זה, המטרה בעצם זה למצוא דרך יפה ויעילה .
הדרך הכי בסיסית שאני חושב עליה זה כל פעם למצוא את המספר הכי קטן ולדחוף אותו למשתנה חדש לפי המיקום שלו. |
קודם כל תספור כמה ספרות יש במספר בעזרת לולאה של חלקי 10.
תשתמש במיון בועות או במיון מקסימום (אם אתה לא יודע מזה תחפש בגוגל ממש לא יזיק לך לדעת). תוציא את המספרים במקומות שונים בעזרת / ו- %. ושתמור את המקום של המספרים המוחלפים במשתנים. זה גם יראה לך באיזה חזקה של 10 הספרה. אני התחלה של סוג של מיון בועות. (רק במקום מערך משתמשים במספר). כלומר נגיד ויש לך 2174. שומרים את המיקום של הספרה הגדולה ביותר במשתנה a ,המיקום כרגע הוא הוא 4. (מיקום 3)האם 1 קטן מ-2? כן. אז פשוט תוריד מהמספר 2*10 בחזקת 4 ותוסיף 1*10 בחזקת 4. תוריד 1*10 בחזקת 3. תוסיף 2*10 בחזקת 3. (מיקום 2) האם 7 קטן מ-1? לא (מיקום 1) האם 4 קטן מ-1? לא ברכותי מצאת המיקום של 1. עכשיו נתחיל את האותו רק עם החל המספר 3. (לא נוגעים יותר בספרת האלפים כי אנחנו יודעים שהיא במקום). מקווה שהבנת.... |
אתה בטוח שצריך לבצע את זה ללא מערך? מה הרעיון?
|
ציטוט:
בכל מקרה כדי שתתרגלו שאלות טיפשיות מהסוג הזה. אם תלמדו מדעי המחשב / הנדסת תוכנה (ובעצם גם מלא תחומים אחרים...) יהיו לכם קורסים שיעסקו בבולשיט הזה. הרעיון פה כפי שאני מבין הוא לבצע את הפעולה בסיבוכיות מקום קוד:
O(1) |
אתה יכול להשתמש באובייקטים אחרים כמו רשימה?
|
כל הזמנים הם GMT +2. הזמן כעת הוא 21:42. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ