ABA


"תרגיל ב C (לולאות) כבר יומיים שאני מנסה לחשוב על פיתרון"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #10151 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 10151
BLACK DOG 
חבר מתאריך 1.8.02
150 הודעות
   15:36   19.11.10   
אל הפורום  
  תרגיל ב C (לולאות) כבר יומיים שאני מנסה לחשוב על פיתרון  
 
   אני מנסה ללמוד לבד C מספר ומדריכים באינטרנט
ונתקעתי בלולאות
התרגיל אומר:
קלוט 10 מספרים וחשב את סכומם
אני ירשום את החלק העיקרי של הקוד שכתבתי אבל זה עדיין לא זה , כרגע אני מבקש רק כיוון לפיתרון ולא את הפיתרון עצמו.
int x, num, sum;
for(x=1; x<11; x++)
printf....
זאת הלולאה וההמשך של איך להציג את עשר המספרים אני יודע
הבעיה היא איך אני מחבר את כל המספרים ביחד
הבנתי שאני צריך שלוש משתנים
X - שיגדל כל פעם באחד וגם יציג לי את המספרים על המסך
NUM - שיקלוט לתוכו בכל לולאה את הערך של X
SUM - שיציג לי את הפלט של החיבור בין כל ה NUM
הבעיה שמתי שאני מנסה לחבר את NUM עם NUM הוא קולט רק את הערך האחרון של X

Redot


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  ההגיון פה לא כל כך נכון חומוס 19.11.10 16:04 1
  בנוסף אתה צריך גם לאפס את SUM בהתחלה Nesher  19.11.10 16:50 2
  בתחילת הלולאה אני צריך לאפס או אחרי הגדרת המשתנים לפני הלולאה? BLACK DOG  19.11.10 18:02 3
     תחשוב בהיגיון חומוס 19.11.10 18:37 4
         וואי השתגעתי מזה כבר BLACK DOG  19.11.10 21:50 5
             אתה טועה והרבה.. חומוס 19.11.10 22:26 6
  לא הבנתי את הקטע האחרון אתה מתכוון למשהו כזה sum=num+num? BLACK DOG  20.11.10 00:03 7
     טוב הצלחתי BLACK DOG  20.11.10 00:30 8

       
חומוס לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 22.4.02
13069 הודעות, 5 פידבק
   16:04   19.11.10   
אל הפורום  
  1. ההגיון פה לא כל כך נכון  
בתגובה להודעה מספר 0
 
NUM לא יכול לטפל גם בקלט חדש וגם בחישוב סכום, ונניח שהיה יכול, אז למה SUM? היית יכול פשוט להציג את הפלט הסופי של NUM.

עוד משהו.. X אחראי על כך שיוכנסו בדיוק 10 מספרים, כך שהוא לא אמור
להיות קשור לחישוב המספרים ולא להצגת במידת הצורך.

לסיכום:

X - אחראי על כך שיוכנסו 10 מספרים
NUM - אמור לקלוט קלט חדש ולהציג מספרים
SUM - אמור להחזיק את הסכום המעדכן, ולהציג אותו בסוף


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Nesher  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 2.7.02
2 הודעות, 24 פידבק
   16:50   19.11.10   
אל הפורום  
  2. בנוסף אתה צריך גם לאפס את SUM בהתחלה  
בתגובה להודעה מספר 0
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
BLACK DOG 
חבר מתאריך 1.8.02
150 הודעות
   18:02   19.11.10   
אל הפורום  
  3. בתחילת הלולאה אני צריך לאפס או אחרי הגדרת המשתנים לפני הלולאה?  
בתגובה להודעה מספר 0
 
  

Redot


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
חומוס לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 22.4.02
13069 הודעות, 5 פידבק
   18:37   19.11.10   
אל הפורום  
  4. תחשוב בהיגיון  
בתגובה להודעה מספר 3
 
אם תאפס אותו בתחילת הלולאה, אז עבור כל איטרציה (x=1, x=2.... וכו') של הלולאה הוא יתאפס מחדש ולא יישמר.

כלומר האתחול כמובן צריך לבוא לפני הלולאה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
BLACK DOG 
חבר מתאריך 1.8.02
150 הודעות
   21:50   19.11.10   
אל הפורום  
  5. וואי השתגעתי מזה כבר  
בתגובה להודעה מספר 4
 
   זה מה שניסיתי וזה עדיין לא עובד
int x, num=0, sum;
for(x=0; x<10; x++)
{
num=x;
printf("%d\n", num);
sum=num+num;


}
printf("%d", sum);

return 0;

}
איפה אני טועה אני לא מבין

Redot


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
חומוס לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 22.4.02
13069 הודעות, 5 פידבק
   22:26   19.11.10   
אל הפורום  
  6. אתה טועה והרבה..  
בתגובה להודעה מספר 5
 
ערכתי לאחרונה בתאריך 19.11.10 בשעה 22:33 בברכה, חומוס
 
אני אנסה כמה שיותר לכוון אותך אל התשובה.

רק לפני כן, תקרא שוב פעם על לולאת FOR ועל קליטה והדפסה של משתנים.

בכל אופן...
קודם כל איתחלת ב0 את NUM במקום את SUM.
אנחנו רוצים לאתחל את SUM ב0 כי הסכום מתחיל מ0 כמובן, ואם לא נאתחל
את המשתנה אז הוא יקבל ערך רנדומלי שאנחנו לא רוצים.

הלאה
בלולאת FOR שלך כפי שציינתי מקודם, התפקיד של X הוא אך ורק לגרום לכך
שהלולאה תתבצע 10 פעמים. אין לו שום תפקיד אחר.
מה שקורה אצלך זה שבכל סיבוב בלולאה, הNUM (שהמשתמש אמור להכניס) מקבל
את X, כלומר בסיבוב הראשון הוא מקבל 0, בשני 1 וכו'..... מיותר.
במקום השורה הזאת צריכה לבוא השורה שמציבה ערך שהמשתמש מכניס לNUM.
זה אמור להתבצע בעזרת הפקודה SCANF.

בסוף הלולאה אתה לוקח את SUM ומחבר אליו NUM פעמיים. למה?
מה שאמור לקרות זה שSUM (ה"חדש") אמור לקבל את עצמו + המספר הנוכחי
שהוכנס - ככה בכל סוף לולאה הסכום יתעדכן.
(לדוגמא - אם יש לי כרגע בסכום 10 ואני רוצה לחבר אליו 13, אז הסכום החדש
יהיה הסכום עצמו (10) + המספר הנוכחי (13).


מקווה שעזרתי


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
BLACK DOG 
חבר מתאריך 1.8.02
150 הודעות
   00:03   20.11.10   
אל הפורום  
  7. לא הבנתי את הקטע האחרון אתה מתכוון למשהו כזה sum=num+num?  
בתגובה להודעה מספר 0
 
  

Redot


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
BLACK DOG 
חבר מתאריך 1.8.02
150 הודעות
   00:30   20.11.10   
אל הפורום  
  8. טוב הצלחתי  
בתגובה להודעה מספר 7
 
   טוב הצלחתי בסוף הנה הקוד שכתבתי
int x, num, sum=0;

for(x=0; x<10; x++){
scanf("%d", &num);
sum+=num;
}
printf("%d", sum);
return 0;

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

Redot


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net