עבור לתוכן

בעיה בתרגיל במבני בקרה בC

Featured Replies

פורסם

שלום

יש לי את השאלה הבאה: "קלוט 10 מספרים סכם כל שניים מהם במהלך הקליטה והדפס בכל פעם את הסכום"

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

דרך 1:


#include <stdio.h> int main(void) { int num=0,a,b,c,d,e,f,g,h,i,j; while(num<10){ printf("Enter a num:"); scanf("%d",&a,&b,&c,&d,&e,&f,&g,&h,&i,&j); num++; } a+=b; c+=d; e+=f; g+=h; i+=j; printf("%d",a); printf("%d",c); printf("%d",e); printf("%d",g); printf("%d",i); fflush(stdin); getchar(); return 0; } [







/code]

דרך 2:

[code]
[pre]#include <stdio.h> int main(void) { int num=0,w,a,b; while(num<10){ for(w=0;w<2;w++) printf("Enter a num:"); scanf("%d",&a,&b); a+=b; num++; } printf("%d",a); fflush(stdin); getchar(); return 0; }
/code]
[/pre]
אשמח אם תוכלו לעזור לי

פורסם

ברוך הבא לפורומים שלנו. ראשית תוסיף לכותרת את תמצית הבעייה שלך.

שנית, כדי שיהיה לנו למה להתייחס, תדביק כאן את הקוד שלך בתוך תגית הקוד (code.gif)

פורסם
  • מחבר

ברוך הבא לפורומים שלנו. ראשית תוסיף לכותרת את תמצית הבעייה שלך.

שנית, כדי שיהיה לנו למה להתייחס, תדביק כאן את הקוד שלך בתוך תגית הקוד (code.gif)

דבר ראשון תודה רבה:)

דבר שני שמתי את זה בתור תגית קוד אבל תראה איך זה נראה...

פורסם

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

חוץ מזה, כמו שכתוב בהנחיות שקישרתי אליהן: תסביר מה בדיוק קורה, ואם יש שגיאה כלשהי אז תרשום אותה כאן.

מהסתכלות קצרצרה על הקוד שלך, נראה לי שיש לך חוסר הבנה קל באיך שעובדות לולאות. לדוגמה, כשאתה עושה לולאה כזו:

for (w=0 ; w<2 ; w++) {
/// something something
}

אז זה אומר שגוף הלולאה יפעל פעמיים בדיוק, ולכן אם הלולאה מכילה דבר כזה:

scanf("%d %d",&a,&b);

אז ה-scanf הזה יתבצע פעמיים, כלומר ייקראו סה"כ 4 מספרים.

ועוד פרט חשוב: כשאתה עושה for, אם אתה לא שם אחריו סוגריים מסולסלים, אז רק הפקודה הראשונה שאחריו תרוץ בלולאה. לדוגמה, אם תעשה ככה:

for (w=0 ; w<2 ; w++) 
a+= 1;
b += 1;
c += 1;

אז רק הפקודה a+=1 היא חלק מגוף הלולאה, ורק היא תתבצע פעמיים - כל השאר יתבצעו רק פעם אחת.

פורסם
  • מחבר

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

חוץ מזה, כמו שכתוב בהנחיות שקישרתי אליהן: תסביר מה בדיוק קורה, ואם יש שגיאה כלשהי אז תרשום אותה כאן.

מהסתכלות קצרצרה על הקוד שלך, נראה לי שיש לך חוסר הבנה קל באיך שעובדות לולאות. לדוגמה, כשאתה עושה לולאה כזו:

for (w=0 ; w<2 ; w++) {
/// something something
}

אז זה אומר שגוף הלולאה יפעל פעמיים בדיוק, ולכן אם הלולאה מכילה דבר כזה:

scanf("%d %d",&a,&b);

אז ה-scanf הזה יתבצע פעמיים, כלומר ייקראו סה"כ 4 מספרים.

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

בנוגע לcode]scanf("%d %d",&a,&b);

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

באמת חידשת לי עד עכשיו עשיתי רק %d אחד פשוט... ואני לא ממש בטוח שהבנתי איך אני יכול תוך כדי קליטה של 10 מספרים לסכם כל פעם שני מספרים ולהדפיס אשמח אם תוכל להסביר לי.איך שעשיתי , אני בכיוון הנכון?

פורסם

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

הפתרון השני שלך הוא בכיוון הנכון, הבעיה היא שיש לך קצת יותר מדי לולאות שם :)

פורסם
  • מחבר

אוקיי פשוט חשבתי שככה רק תראה שהגבתי :) אממ עשיתי לולאה בתוך לולאה כלומר שלולאה אחת תעבוד עד שהיא תגיע ל10 ככה שהלולאה השנייה תמשיך לעבוד ותחשב כל שני מספרים עד שהלולאה הראשונה תגיע ל10 אני מקווה שהבנת את הכוונה שלי:) יש דרך יותר נכונה לעשות את זה?

פורסם

תשים לב כמה פעמים בסה"כ אתה קולט מספרים ומה הסדר הלוגי שאתה רוצה לקלוט אותם.

גם לעשות לולאה בשביל 2 איטרציות זה קצת עקום.

פורסם
  • מחבר

תשים לב כמה פעמים בסה"כ אתה קולט מספרים ומה הסדר הלוגי שאתה רוצה לקלוט אותם.

גם לעשות לולאה בשביל 2 איטרציות זה קצת עקום.

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

פורסם

תחשוב על איך לפרק את הבעיה למרכיביה הבסיסיים.

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

תתחיל מלפתור גרסה יותר פשוטה של הבעיה - לקבל רק זוג מספרים ולהדפיס את הסכום שלהם.

פורסם
  • מחבר

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

ארכיון

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

דיונים חדשים