פורסם 2008 באוגוסט 2217 שנים מצאתי באתר שמישהו נתן פה בפורום, כל-מיני שיטות מיון, כאשר מאחת מהן התלהבתי מאוד-מאוד, Quick Sort. מצאתי את הקוד של המיון, אבל הבעיה היא שהוא כתוב בשפת JAVA, שאותה אני לא מבין כ"כ. רציתי לדעת אפ מישהו יכול להנחות אותי איך להמיר את קטע הקוד החמוד הזה לשפה שאני מכיר ומשתמש בה, C/C++ (עם העדפה ל C++). תודה מראש [attachment deleted by admin]
פורסם 2008 באוגוסט 2217 שנים Java די דומה ל-++C. אין פה הרבה עבודה:1. תיפטר מכל ההגדרות המיותרות (אתה לא צריך קלאסים, לא צריך throws וכו').2. במקום להעביר מערך באמצעות []int a, תעביר מצביע ל-int ואת גודל המערך (כנהוג ב-C) או לחילופין, תשתמש ב-<vector<int (ותזכור להעביר אותו כ-reference לכל הפונקציות).3. תזכור להפריד את הקוד לקובץ cpp וקובץ h.
פורסם 2008 באוגוסט 2217 שנים מחבר Java די דומה ל-++C. אין פה הרבה עבודה: 1. תיפטר מכל ההגדרות המיותרות (אתה לא צריך קלאסים, לא צריך throws וכו'). 2. במקום להעביר מערך באמצעות []int a, תעביר מצביע ל-int ואת גודל המערך (כנהוג ב-C) או לחילופין, תשתמש ב-<vector<int (ותזכור להעביר אותו כ-reference לכל הפונקציות). 3. תזכור להפריד את הקוד לקובץ cpp וקובץ h. 1-2. תודה, אני אנסה את זה. 3. אין לי שמץ מה בדיוק מתאים לכל חלק, אם תוכל לעזור לי זה יהיה נחמד , אחרת אני אנסה בשיטה של ניסוי וטעייה.
פורסם 2008 באוגוסט 2217 שנים בקובץ h אתה שם הצהרות של הפונקציות (שורת הכותרת - השורה שמכילה את שם הפונקציה, הפרמטרים וערך ההחזרה).בקובץ cpp אתה שם את הפונקציה עצמה (כולל שורת הכותרת).
פורסם 2008 באוגוסט 2217 שנים מחבר http://mathbits.com/mathbits/compsci/Arrays/Quick.htm תודה רבה! אני אנסה להתאים את הקוד הזה לאיך שאני לומד C++, כי אנחנו לא למדנו וקטורים עדיין, ואין לי מושג אם נלמד בטווח הקרוב... בקובץ h אתה שם הצהרות של הפונקציות (שורת הכותרת - השורה שמכילה את שם הפונקציה' date=' הפרמטרים וערך ההחזרה). בקובץ cpp אתה שם את הפונקציה עצמה (כולל שורת הכותרת). [/quote'] תודה רבה על העזרה, אני אשתמש בחלוקה הזאת בעתיד, או אם אני אשתמש בכל אופן בקוד מ JAVA. יש לי רק שאלה על צורת החלוקה: אם בקובץ ה h אני שם רק את האבטיפוס של הפונקציה, אז איך כשאני קורא לקובץ h, נניח iostream, אני יכול להשתמש בפונקציות, ולא צריך לכתוב אותן? האם אפשר לכתוב בתוך קובץ ה h את כל הפונקציה? אני לא אגיב פה במהלך השבת, אז רק רציתי לאחל שבת שלום לכולם
פורסם 2008 באוגוסט 2217 שנים אפשר, לא מומלץ, למעט מקרים ספציפיים (אם אתה כותב template אז אתה חייב).לא הבנתי מה אתה רוצה לעשות עם iostream, ואיך אתה משתמש בו עכשיו.
פורסם 2008 באוגוסט 2317 שנים מחבר אפשר' date=' לא מומלץ, למעט מקרים ספציפיים (אם אתה כותב template אז אתה חייב).לא הבנתי מה אתה רוצה לעשות עם iostream, ואיך אתה משתמש בו עכשיו.[/quote']אני לא משתמש ב iostream עכשיו, אני רק רציתי לשאול, איך זה שכשאני קורא לקובץ iostream (ע"י include), אני יכול להשתמש בפונקציות של הספרייה, ולא צריך לכתוב אותן בעצמי.רציתי לדעת איך עובד הרעיון הזה.
פורסם 2008 באוגוסט 2317 שנים כי iostream זה חלק מספריה מוכנה של המערכת שבה אתה משתמש והמימוש שלו נמצא בה.
פורסם 2008 באוגוסט 2317 שנים מחבר כי iostream זה חלק מספריה מוכנה של המערכת שבה אתה משתמש והמימוש שלו נמצא בה.מה שאומר שאם אני רוצה ליוצר קובץ header, ולהשתמש בו כמו שאני משתמש ב iostream, אני צריך לכלול בו את כל הפונקציה, ולא רק את האבטיפוס שלה, נכון?
פורסם 2008 באוגוסט 2317 שנים לא.העקרון שבו עובדת C (ושפות אחרות) הוא שאתה יכול להפריד את הקוד שלך באופן חופשי לקבצים שונים.תהליך הבנייה עצמו מורכב משני שלבים - הידור (compile) וקישור (link).בשלב ההידור, המהדר (compiler) לוקח כל קובץ C והופך את הפונקציות שבו לשפת מכונה (קובץ obj).בשלב הקישור, המקשר (linker) לוקח את קבצי ה-obj האלה ומחבר אותם לקובץ אחד (שהוא exe או dll).עכשיו, נניח שיש לך קובץ C אחד (נקרא לו a.c) שמשתמש בפונקציה f הקיימת בקובץ C אחר (נקרא לו b.c).אז על מנת שהקובץ a.c יתקמפל, הוא רק צריך לדעת איך לקרוא לפונקציה f - הוא לא צריך לדעת מה היא עושה, או בכלל איפה היא ממומשת. בשביל זה, מכניסים את ההגדרה של הפונקציה f בקובץ בשם b.h, ועושים לו אינקלוד ב-a.c.כשהקומפיילר מקמפל את a.c, הוא יוצר את a.obj, וזוכר שקיימת שם התייחסות לפונקציה חיצונית בשם f, ומסמן אותה.בשלב הבא, הלינקר עובר על כל קבצי ה-obj, ובודק למי "חסרות" פונקציות. הוא רואה שב-a.obj חסרה פונקציה בשם f, ומוצא שהיא קיימת ב-b.obj - וככה הוא מקשר ביניהן.(שים לב שאני מפשט קצת, כי ב-++C יכולות להיות פונקציות שונות עם אותו שם)
פורסם 2008 באוגוסט 2417 שנים מחבר לא.העקרון שבו עובדת C (ושפות אחרות) הוא שאתה יכול להפריד את הקוד שלך באופן חופשי לקבצים שונים.תהליך הבנייה עצמו מורכב משני שלבים - הידור (compile) וקישור (link).בשלב ההידור, המהדר (compiler) לוקח כל קובץ C והופך את הפונקציות שבו לשפת מכונה (קובץ obj).בשלב הקישור, המקשר (linker) לוקח את קבצי ה-obj האלה ומחבר אותם לקובץ אחד (שהוא exe או dll).עכשיו, נניח שיש לך קובץ C אחד (נקרא לו a.c) שמשתמש בפונקציה f הקיימת בקובץ C אחר (נקרא לו b.c).אז על מנת שהקובץ a.c יתקמפל, הוא רק צריך לדעת איך לקרוא לפונקציה f - הוא לא צריך לדעת מה היא עושה, או בכלל איפה היא ממומשת. בשביל זה, מכניסים את ההגדרה של הפונקציה f בקובץ בשם b.h, ועושים לו אינקלוד ב-a.c.כשהקומפיילר מקמפל את a.c, הוא יוצר את a.obj, וזוכר שקיימת שם התייחסות לפונקציה חיצונית בשם f, ומסמן אותה.בשלב הבא, הלינקר עובר על כל קבצי ה-obj, ובודק למי "חסרות" פונקציות. הוא רואה שב-a.obj חסרה פונקציה בשם f, ומוצא שהיא קיימת ב-b.obj - וככה הוא מקשר ביניהן.(שים לב שאני מפשט קצת, כי ב-++C יכולות להיות פונקציות שונות עם אותו שם)אז למעשה, כשאני יוצר קובץ header, אני צריך לכתוב בו רק את האבטיפוס של הפונקציה, ובקובץ אחר, עם הסיומת c או cpp, אני צריך לכתוב את הפרוט של הפונקציה, והקומפיילר כבר יקשר בניהם לבד?
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.