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

שאלה קלה מאוד בתיכנות c

  • פותח/ת השרשור talp
  • פורסם בתאריך

talp

משתמש משקיע
4,968
4,036
נק' מוניטין:
12,989
4,968
4,036
קאנטרי זכרון
אני צריך לעשות תוכנית שתקלוט מערך בגודל לא ידוע ותעצר כשהאיבר השני ומעלה יהיה שווה לאיבר הראשון.
למשל: 1,2,3,2,1
כאשר 1 הוא ראשון אצלי, אז בפעם הבאה ששוב אני אקלוט 1 הלולאה תעצר לאחר קליטתו.

אני רוצה לעשות את זה בdo while, הצלחתי לעשות בfor אבל אני דווקא רוצה do while.
אז תגידו לי מה לא תקין בבקשה 😃

i=0;
do
{
scanf("%d",&a
i++;
}
while (a!=a[0]);


a זה מערך, i סופר לי כמה ערכים הכנסתי ומראה לי תמיד את האינדיקטור למה שנכנס אחרון.
(הרישום לא נראה טוב בגלל ההזזה, אז תשימו לב.
ניסיתי גם לקרוא 2 משתנים מחוץ לdo (זה המינימום משתנים שאני קולט) ואז שלא יקרה מצב שאני משווה את a[0] לאיזה זבל a[1] ועדיין לא עבד.
 
int num;
int i =0;
char arr[10000];
scanf("%d",&num);
arr[0] = num;
do
{
scanf("%d",&num);
a[i++] = num;
}
while(a!=a[0]);

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


לדעתי הפתרון שלך סבבה ואם תוסיף
scanf("%d",&num);
arr[0] = num;
לפני הלולאה זה אמור לעבוד
ויכול להיות גם שלא עבד כי קראת לזה באותו משתנה, a המערך ו a המספר שאתה קולט , ויכול להיות שזה דורס את המערך וזה נדפק גם כן , תנסה עם משתנים שונים
 
  • פותח/ת השרשור
  • #3
int num;
int i =0;
char arr[10000];
scanf("%d",&num);
arr[0] = num;
do
{
scanf("%d",&num);
a[i++] = num;
}
while(a!=a[0]);

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


לדעתי הפתרון שלך סבבה ואם תוסיף
scanf("%d",&num);
arr[0] = num;
לפני הלולאה זה אמור לעבוד
ויכול להיות גם שלא עבד כי קראת לזה באותו משתנה, a המערך ו a המספר שאתה קולט , ויכול להיות שזה דורס את המערך וזה נדפק גם כן , תנסה עם משתנים שונים
שניהם a[]
שניהם מערכים...
מסתבר שהבאג דווקא קרה כי ה i++ מתחת ולא מעל ה scanf
למה זה ככה? יש לכם מושג?
 
אא"לט תקרא את ההבדל בין I++ ל++I וזה אמור לתת לך תשובה, אני אחרי יומיים בלי שינה יש מצב אני טועה.
 
אני צריך לעשות תוכנית שתקלוט מערך בגודל לא ידוע ותעצר כשהאיבר השני ומעלה יהיה שווה לאיבר הראשון.
למשל: 1,2,3,2,1
כאשר 1 הוא ראשון אצלי, אז בפעם הבאה ששוב אני אקלוט 1 הלולאה תעצר לאחר קליטתו.

אני רוצה לעשות את זה בdo while, הצלחתי לעשות בfor אבל אני דווקא רוצה do while.
אז תגידו לי מה לא תקין בבקשה 😃

i=0;
do
{
scanf("%d",&a
i++;
}
while (a!=a[0]);


a זה מערך, i סופר לי כמה ערכים הכנסתי ומראה לי תמיד את האינדיקטור למה שנכנס אחרון.
(הרישום לא נראה טוב בגלל ההזזה, אז תשימו לב.
ניסיתי גם לקרוא 2 משתנים מחוץ לdo (זה המינימום משתנים שאני קולט) ואז שלא יקרה מצב שאני משווה את a[0] לאיזה זבל a[1] ועדיין לא עבד.

לא ברור מה כתוב כאן, תתקן את זה. ה scanf לא הגיוני וגם התנאי עצירה לא הגיוני.
 
אפשר פשוט לקלוט את המספר הראשון של המערך לפני הwhile
ואז זה דיי פשוט כל עוד הקלט הראשון שונה מהנוכחי הלולאה תמשיך.';
int i=1
int k=reader.nextINT();
while(int k!=arr
arr i=reader.nextInt()
i++;
 
שימו לב! השרשור ישן: לא היו תגובות בשרשור מעל 90 יום.

ייתכן שהתוכן בשרשור כבר אינו רלוונטי ולכן עדיף לפתוח שרשור חדש.
Back
למעלה תחתית