שאלה בויבי

Benayoun

New member
שאלה בויבי

איך אני עושה שהתוכנית תגריל לי 6 מספרים מ 1 עד 20 ושיהיו שונים. כלומר אם יוצאים 2 דומים אז שתגריל שוב
 

avi182

New member
תכתוב לה תנאי פשוט

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

odstudio

New member
דווקא פשוט

כך צריכה להתבצע התוכנית: 1. הגדר ווקטור (מערך) בגודל של 6 מספרים. 2. הגדר משתנה מספרי (בוא נקרא לו f) שיחזיק כמה מספרים כבר הוכנסו למערך. אתחל משתנה זה ל - אפס. 2. הגרל מספר. 3. סרוק את המערך מתחילתו ועד f. (אם אתה כותב ב- c/c++ עליך לסרוק את המערך מ-אפס ועד f-1. 4. אם במהלך סריקת המערך גילית ערך הדומה לזה שהגרלת בסעיף 2, חזור ובצע את סעיף 2 ואילך שוב. 5. אם לא גילית מספר דומה לזה שהגרלת במערך, הכנס את המספר המוגרל למערך בתא מספר f והגדל אותו ב- 1. 6. אם f בעל ערך בגודל הווקטור (5 במקרה של c/c++) המשך בתוכנית. אם לא, לך לסעיף 2 ובצע ממנו ואילך.
 

odstudio

New member
עוד משהו קטן

טוב, למרות שאני לא מהמומחים ב- VB, אלא דווקא ב- c/c++, צרפתי כאן קובץ של התוכנית שכתבתי, שעושה בדיוק מה שרצית. לימוד נעים!
 

דינדנקט

New member
שיטה מהירה לשליפת הרבה מספרים

שונים מתחום קטן: 1) תבנה מערך בגודל 20 שיכיל את המספרים מ-1 עד 20 2) תוציא כל פעם זוג מספרים באקראי בן 1 ל - 20 ותחליף את המספרים במערך שבמקומות הנ"ל 3) אחרי שהמערך "מבולגן" תשלוף את 6 המספרים הראשונים...
 

סתםשם

New member
הרבה יותר פשוט

ליצרו מערך של X מס´. ליצור לולאה ש לבחור מס´ ראקראי מ1 עד X להעביר את התא האחרון לתא שנבחר (לאחר הוצאת המישתנה) --X מקווה שזה ברור בהצלחה
 

odstudio

New member
לא מוצא חן בעיני...

נכון שבעיקון השיטה שלך "מהירה" אבל: 1. השיטה שלך בזבזנית בזיכרון. אמנם ציינת בתשובתך שזה פתרון למספרים מטווח קטן, אבל למה להגדיר מערך של 20 מספרים במקום רק 6? מה היה קורה אם טווח המספרים היה גדול מאוד? אזי הפתרון שלך ממש גרוע! 2. ייתכן מצב שהתאים שהוחלפו - יוחלפו שוב ואז המערך "ייסתדר" מחדש. הרי אתה לא בודק את זה. 3. איך בדיוק תחליט מתי המערך "מבולגן"? אתה סומך על מזל יותר מדי.
 

דינדנקט

New member
ממ....

בלי להתיחס לשיפורים [הנכונים בהחלט, פשוט לא חשבתי עד הסוף] שהוזכרו למעלה. 1. כל שיטה מתאימה למקרים ספציפים. 2. גם הפלט 1-2-3-4-5-6 הינו פלט שאמור לקרות (בערך פעם ב 20! ) 3. אחרי - נגיד 100 איטרציות.... 4. סופשבוע שקט לכולם
 

Zack DA

New member
אגב...

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