עבור לתוכן

בעיה ביצירת תנאי ב-C

Featured Replies

פורסם

עשיתי את התנאי

if (i == ans[0]||i == ans[1]||i == ans[2]||i == ans[3])

i אמור להיות מספר שנבחר ברנדומליות בין הטווח 0-3.

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

ולכן כל פעם שימצא מספר שדומה לאחד מהם הוא עוד פעם יקח מספר רנדומלי עד שיצא מספר לא משומש.

אבל שאני מפעיל את התוכנית אני מקבל שגיאה:

ISO C++ forbids comparison between pointer and integer

ans זה מערך של מחרוזות.

ואני משתמש במהדר DEV.

תודה על העזרה.

פורסם

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

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

פורסם
  • מחבר

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

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

מה זה פרמוצטיה? P:

שמע

אני עושה מין חידון ואני רוצה שהוא יציג את ארבעת התשובות בסדר שונה.

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

נגיד עשיתי את הRAND

ויצא ש i = 2

כלומר שהוא יציג את [2]ans

ושהוא עוד פעם יצא RAND במספר 2 אז הוא לא יעשה בגלל שיש כבר מחרוזת כזאת בשימוש

ולכן עד שיצא.

יש לך דרך יותר טובה? ומה זאת אומרת להמיר אחד לטיפוס של השני?

תודה.

פורסם

אני מתאר לעצמי שיש כל מיני אלג' מעניינים לעסק הזה, אבל בגלל שבמקרה הזה מדובר רק ב 4 תשובות אני ממליץ לך לעשות דבר כזה:

תפתח מערך של INTEGER בגודל 4

כאשר בכל תא במערך תן יכיל את האינדקס של עצמו (כלומר תא 0 יכול 0 תא 1 יכיל 1 וכו).

תגריל מספר בין 0 ל 3 ותבצע בדיקה אם המספר שיצא.

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

אז תבצע בחירה רנדומלית שוב.

אם לא שווה ל (-1 ) אז תשתמש במספר הזה ותשים בו אחר כך (-1 ) כדי שתדא שהמספר הזה כבר נבחר.

;)

פורסם

פרמוטציה/תמורה זה בדיוק שינוי סדר האיברים.

אתה יכול או להמיר את המחרוזת למספר (למשל עם atoi) או להמיר את המספר למחרוזת (עם itoa,או sprintf) ואז להשוות עם strcmp.

ארכיון

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

דיונים חדשים