איך להגדיר פונקציה ב-C++ שמקבלת מספר שלם, ויוצרת מערך בגודל אותו מספר שהיא קיבלה - עמוד 3 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

איך להגדיר פונקציה ב-C++ שמקבלת מספר שלם, ויוצרת מערך בגודל אותו מספר שהיא קיבלה


assaf990

Recommended Posts

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

צדקת בכל הנחותיך!

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

מה דעתך?

קישור לתוכן
שתף באתרים אחרים

  • תגובות 39
  • נוצר
  • תגובה אחרונה

למען האמת, קיימת אפשרות להשתמש בדמוי מערך, שהוא דינאמי. זאת באמצעות מה שנקרא Operator-Overriding ב-C++.

בעצם, אין לו צורך ליצור כזה במיוחד, כי קיים כבר דבר דומה ב-STL (שזה Standard Template Library) בשם MAP (זה לא בדיוק מערך, אבל ישמש אותו היטב לצורך העניין).

לכן, בארטון כמעט צודק... והרי קישור:

http://msdn2.microsoft.com/en-us/library/s44w4h2s.aspx

עריכה: דוגמה לשימוש ב-map :

http://msdn2.microsoft.com/en-us/library/fe72hft9.aspx

ואגב, למי שלא מכיר את מושג ה-Template, אז הסינטקס:

map<int, int>

במקרה הזה, אומר שהאינדקס של המפה הוא מספר שלם, וגם הטיפוס שמכילה המפה הוא מספר שלם - בקיצור, זה סוג המפה שאתה צריך.

מצטער להתפרץ לדיון, אבל פשוט הייתי חייב.

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

מערך דינאמי == vector.

לדוגמה, ככה מגדירים vector באורך 10:

vector<int> v(10);

ואז אפשר לגשת אליו כמו מערך. אפשר לעשות לו resize כדי לשנות את הגודל, או סתם push_back ו-pop_pack כדי להוסיף ולהוריד איברים.

קישור לתוכן
שתף באתרים אחרים

מצטער להתפרץ לדיון, אבל פשוט הייתי חייב.

מערך דינאמי == vector.

להיפך! חובה עליך להתפרץ :)

באמת זכרתי שיש גם מערך, אבל לא זכרתי איך קוראים לזה, אז כתבתי מה שיכול לשמש אותו (גם הזכרתי שזה לא ממש מערך, אם תבדוק שוב).

אז תודה על התזכורת ;)

ובאופן כללי, אני חושב שכשמישהו כאן רואה טעות ברורה של מישהו אחר - זה מאוד טוב שישתף את כולם בידע שלו - הרי זה כל הרעיון בפורום, לא? 8)

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.


×
  • צור חדש...