פורסם 2012 באוגוסט 2413 שנים שלום,יש לי תרגיל שקצת הסתבכתי:# include <stdio.h># include <conio.h>void main(){int num,max=0,max2=0;float avg=0,sum=0,counter=0;printf("enter your numbers,end with 0:\n");scanf("%d",&num);//get numbersmax=num;//put num in maxwhile(num!=0)//check if num not equal to zero{sum+=num;//add num to sumcounter++;//add one to counterif(num>max){//check if num is biger than maxmax2=max;//put max in max2max=num;//put num in max}elseif(num>max2&&num!=max)//check if num is biger than max2 and numis not equal to maxmax2=num;//put num in max 2scanf("%d",&num);}avg=sum/counter;//make avarge if(max2==0)printf("sum=%d, eve=%.2f, there is no 2nd max",sum,avg); else printf("sum=%.f avg=%.2f 2nd max=%d",sum,avg,max2);getch();}ההוראה של התרגיל היא:לבקש ולקלוט סדרה של מספרים המסתיימת באפס ולציג את ממוצעם סכומם ואת המספר השני בגודלו.אפס לא נחשב כאחד מאיברי הקבוצה.כאשר מתקבלת קבוצת מספרים זהים כגון :2 2 2 2 0 אין מספר שני בגודלו.הבעיה שלי היא בדיוק בקבוצת המספרים הזאת,כשאני מכניסה אותה לתוכנית הממוצע והסכום יוצאים לי אפסמה עשיתי לא נכוןתודה
פורסם 2012 באוגוסט 2413 שנים כמה היערות לפני שניגשים לתוכנית עצמה.ראשית, למה אתה משתמש בסטנדרטים שחלפו מן העולם? ה-main היא פונקצייה המחזירה int וכבר לא משתמשים בפונקציות של conio.שנית, תערוך את ההודעה שלך ותדביק קוד קריא יותר, כלומר עם אינדנטציה.
פורסם 2012 באוגוסט 2413 שנים מחבר האמת שככה לימדו אותנו להשתמש בCONIO ובקשר לקוד,למה הכוונה?חח סורי אני חדשה בתחום
פורסם 2012 באוגוסט 2413 שנים היכן את לומדת?הנה הקוד שלך עם אינדנטציה:# include <stdio.h># include <conio.h>void main(){ int num,max=0,max2=0; float avg=0,sum=0,counter=0; printf("enter your numbers,end with 0:\n"); scanf("%d",&num);//get numbers max=num;//put num in max while(num!=0)//check if num not equal to zero { sum+=num;//add num to sum counter++;//add one to counter if(num>max) //check if num is biger than max { max2=max;//put max in max2 max=num;//put num in max } else { if(num>max2&&num!=max)//check if num is biger than max2 and num is not equal to max { max2=num;//put num in max 2 } } scanf("%d",&num); } avg=sum/counter;//make avarge if(max2==0) { printf("sum=%d, eve=%.2f, there is no 2nd max",sum,avg); } else { printf("sum=%.f avg=%.2f 2nd max=%d",sum,avg,max2); } getch();}
פורסם 2012 באוגוסט 2413 שנים scanf("%d",&num)פירושו, קלוט מספר יחיד מסוג INTEGER.אני חושב שאת אמורה לקרוא בלולאה לSCANF עד שתקבלי 0משהו סטיילwhile(1){scanf(%d,&num);if(num == 0) break;maxnum = maximum(num,maxnum);maxnum2 = minimum(maxnum,maxnum2);sum +=num;count++;}avg=sum/countWTF ?? מה זה כל הזבל שנוסף להודעה שלי, אין לי כח לרשום מחדש.
פורסם 2012 באוגוסט 2413 שנים מה רע בCONIO חוץ מזה שהוא לא עובד על לינוקס מן הסתם.גם זה. וגם זה הרגל לא טוב. למה לכתוב קוד מיושן?ולפותחת התראד - תשתמשי בדיבאגר. תעלי על הבעייה תוך זמן קצר.
פורסם 2012 באוגוסט 2513 שנים גיל אני לא מסכים, אין לה מושג מה SCANF עושה. פותחת הדיון בדקי איך SCANF פועל.רמז: את תצטרכי להשתמש בלולאה בתרגיל הזה.
פורסם 2012 באוגוסט 2513 שנים אחח המורים של היום והתרגילים המוזרים שלהם, שיהיו לי בראים.... מסכים עם גיל, הדיבאגדר הוא חבר שלך. באיזה עורך טקסט\IDE אתה משתמש אגב? ולגבי השאלה, אם קלט 0 הוא תנאי הסיום. מה אתה מצפה מקלט שמתחיל ב 0 ?
פורסם 2012 באוגוסט 2513 שנים מחבר תודה רבה!סוף סוף עליתי על זה..לא מאמינה שבזבזתי יום שלם על טעות מפגרת חח
פורסם 2012 באוגוסט 2513 שנים יום שלם?! באסה להיות את זאת בדיוק הסיבה שגיל הציע לך להשתמש בדיבאגר. בגדול זה כלי שמאפשר לך (בין השאר) לעבור בקוד שורה אחר שורה (אם תרצי), לשים נקודות עצירה בתוך הקוד ולראות את ערכי המשתנים בזמן אמת. והחדשות הטובות הן שממש פשוט ללמוד להשתמש באחד, עניין של דקות, פלוס היום כל IDE בא עם אחד מובנה. תלמדי להשתמש בדיבאגר מוקדם, זה טוב לבריאות הנפשית
פורסם 2012 באוגוסט 2613 שנים assertים לא נועדו לדגב קוד. הם אמורים לעזור לתפוס מקרים חריגים שלא צריכים להיות שם. פה מדובר על קלט חוקי לגמרי, פלוס כשאתה כותב assert אתה צריך לדעת מה אתה מחפש...וגם משפטי print, בשפה סטטית זה פשוט לא זה, כי יש לך את כל מעגל ה compile - run וזה מעצבן.כן, זה יכול לעבוד אם אתה מדבג GUI מורכב או מנוע פיזיקה. לרוב אבל זה בזבוז זמן שמפריע לך לחשוב.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.