shaithebest פורסם 2007 בדצמבר 15 Share פורסם 2007 בדצמבר 15 שלום לכולםיש פה שאלה משיעורי בית בשפת cבמדינתנו נערך משאל עם בו נשאלנו האם אנו מוכנים להחזיר את הגולן.כל תושב התבקש לענות באופן הבא:אם תשובתו חיובית לרשום: yאם תשובתו שלילית לרשום: nאם נמנע : Lבממשלה התקבלה ההחלטה שמחזירים את הגולן רק אם יש בעם רוב של 60% בעד ההחזרה.כתוב תוכנית אשר מקבלת את תוצאות משאל העם (רצף של תווים המסתיים באות s).על התוכנית להציג את סך תוצאות המשאל והודעה האם נחזיר את הגולן.אני כתבתי תוכנית כזו:#include<stdio.h>void main(){ char ch;int y=0,n=0,l=0,count_all=0,count_y=0,count_n=0,count_l=0;printf("enter decision\n");scanf("%c",&ch);while(ch!='s'){ if(ch=='y') count_y++; if(ch=='n') count_n++; if(ch=='l') count_l++; scanf("%c",&ch); count_all++;}if((float)count_y/count_all>=0.6) printf("we give back the golan\n"); printf("y=%d\n",count_y); printf("n=%d\n",count_n); printf("l=%d\n",count_l);}הרצתי את התוכנית בקומפיילר והכל טוב ויפה אבל רק דבר אחד זה שלא ידעתי איך להביא לידי ביטוי את שאלת ה-60%.בהרצה הוא לא מראה לי שום דבר שנוגע ל60%אם מישהו יודע את האלגוריתם הזה יבורךתודה מראש קישור לתוכן שתף באתרים אחרים More sharing options...
LazyBoy פורסם 2007 בדצמבר 15 Share פורסם 2007 בדצמבר 15 בלי להסתכל על הקוד שלך (כי הוא לא מובן) אני חושב שזו הדרך הפשוטה ביותר.אתה יודע כמה תווים יש במחרוזת.אז אם סה"כ_ענו_להחזיר >= אורך_המחרוזת*0.6 אתה מדפיס הודעה שכן. קישור לתוכן שתף באתרים אחרים More sharing options...
shaithebest פורסם 2007 בדצמבר 15 מחבר Share פורסם 2007 בדצמבר 15 #include<stdio.h>void main(){ char ch;int y=0,n=0,l=0,count_all=0,count_y=0,count_n=0,count_l=0;printf("enter decision\n");scanf("%c",&ch);while(ch!='s'){ if(ch=='y') count_y++; if(ch=='n') count_n++; if(ch=='l') count_l++; scanf("%c",&ch); count_all++;}if((float)count_y/count_all>=0.6) printf("we give back the golan\n"); printf("y=%d\n",count_y); printf("n=%d\n",count_n); printf("l=%d\n",count_l);} קישור לתוכן שתף באתרים אחרים More sharing options...
PhoenixBoy פורסם 2007 בדצמבר 15 Share פורסם 2007 בדצמבר 15 אני לא יודע C אבל מהסתכלות על הקוד נראה שהכל בסדר...אם אתה כל הפלט שאתה מכניס הוא רק y, הוא לא מציג לך את השורה שצריך להחזיר את הגולן?עריכהבדקתי את מה שכתבת קצת יותר.. קודם כל המשתנה count_all מיותר. דבר שני אני חושב שהבעיה שלך הייתה בגלל הסוג של המשתנים. התוצאה של החישוב שלך צריכה לצאת מספר לא שלם (0 נקודה משהו) ובגלל שאתה מחלק כאן מספר שלמים(integer) אז התוצאה היא גם מסוג מספר שלם, כלומר 0.הנה קוד שעובד(הוספתי גם שורה שמציגה את האחוזים שבעד):#include<stdio.h>void main(){ char ch;int y=0,n=0,l=0,count_y=0,count_n=0,count_l=0;printf("enter decision\n");scanf("%c",&ch);while(ch!='s'){ if(ch=='y') count_y++; if(ch=='n') count_n++; if(ch=='l') count_l++; scanf("%c",&ch);} if ((float)(count_y)/(float)(count_y+count_n+count_l)>=0.6) printf("we give back the golan\n"); printf("precents=%f\n", (float)(count_y)/(float)(count_y+count_n+count_l)); printf("y=%d\n",count_y); printf("n=%d\n",count_n); printf("l=%d\n",count_l);} קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2007 בדצמבר 16 Share פורסם 2007 בדצמבר 16 שתי הערות קטנות:א. הפונקציה main צריכה להחזיר int, לא void.ב. אל תשתמש ב-float. תשתמש ב-double. קישור לתוכן שתף באתרים אחרים More sharing options...
eli33 פורסם 2007 בדצמבר 16 Share פורסם 2007 בדצמבר 16 מה זה משנה אם הוא ישתמש ב double ולא ב float ..חוץ מזה שזה יותר מדוייק יש לזה עוד סיבה?סתם לידע כללי. קישור לתוכן שתף באתרים אחרים More sharing options...
Zelig פורסם 2007 בדצמבר 16 Share פורסם 2007 בדצמבר 16 עניין של הרגל. הטיפוס הכללי (וברירת המחדל) של C ו-C++ עבור floating point הוא double.להשתמש ב-float סתם ככה זה כמו להשתמש ב-short. קישור לתוכן שתף באתרים אחרים More sharing options...
eli33 פורסם 2007 בדצמבר 16 Share פורסם 2007 בדצמבר 16 אבל מן הסתם להשתמש בshort חסכוני יותר. למרות שזה כמעט לא משמעותי בתוכניות כאלה קטנות אבל עדיין.העניין הוא שעד עכשיו שלמדתי c c++ c# כמעט תמיד השתמשנו ב float למרות שידענו על קיומו של ה double.בכל מקרה תודה על התשובה. קישור לתוכן שתף באתרים אחרים More sharing options...
shaithebest פורסם 2007 בדצמבר 16 מחבר Share פורסם 2007 בדצמבר 16 סבבה תודה לכולםסתדרתיהבכעיה היחידה היתה שהוא לא הראה לי את התוצאה באחוזיםלא יכול להפטר מה-floatהמרצה שלי שהוא ד"ר לאלגוריתמיקה אמר לעזוב את הדאבלהתרגיל פתור אבל יש לי עוד הרבה.בא לכם לפתור עוד תרגילים??אם מישבו מבינכם סטודנט באוניברסיטת ת"א לאחד ממגמות ההנדסה אז אפשרי לפתור ביננו לבין עצמינו תרגילים בC שמשותף לכולנו קישור לתוכן שתף באתרים אחרים More sharing options...
Zelig פורסם 2007 בדצמבר 17 Share פורסם 2007 בדצמבר 17 שניכם טועים. כאשר תכתבו תוכניות גדולות, או תצטרכו אופטימיזציות באמת, אז תחליפו int ב-short ו-double ב-float. ברמה של "חישוב אחוזים בלולאות "while אל תעשו אופטימיזציות כאלה. אל תקנו לעצמכם הרגלים גרועים. קודם תסדרו את האלגוריתם שלכם. אחרי תעשו profiling. אחרי זה תעשו אופטימזציות.ואם להתלות בעץ גבוה:"We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil." קישור לתוכן שתף באתרים אחרים More sharing options...
shaithebest פורסם 2007 בדצמבר 17 מחבר Share פורסם 2007 בדצמבר 17 אתה אומר שכל מה שמלמדים אותי באוניברסיטה זה בזבוז זמן?הרי בטוח שאני לא יעבוד על C אבל זה מבוא לC++ לא?????.אני חייב לכתוב על קומפיילר עם משתנים int float לפי הסילבוסאין מצב שאני מגיש עבודה או כותב מבחן בלי זההמבחנים אצלינו זה קטעי קוד כתובים עם קטעים חסרים שצריך להשלים את החסר והם כתובים עם המשתנים האלהכמו לעבוד בבדיקות תוכנה QA נראה ליהרי בטוח שמהנדסי תוכנה מתחילים את הקריירה בזה ולא כמתכננים ומפתחים אלא אם כן יש לך תיק עבודות בומבסטיאז נכון שחשיבה אלגוריתמית מתמטית לוגית זה הכי חשוב אבל תנו לי לכתוב בא לי למות כברשמע בילבלת אותי לגמרי עם מה שרשמת על זה שint float זה בזבוז זמןתודהאגב: מה עם עוד תרגילים?בא לכם לפתור ככה בסבבה ביחד ?יש לי המון שיעורי בית קישור לתוכן שתף באתרים אחרים More sharing options...
Zelig פורסם 2007 בדצמבר 18 Share פורסם 2007 בדצמבר 18 אתה אומר שכל מה שמלמדים אותי באוניברסיטה זה בזבוז זמן?חס ושלום!אבל נראה שיש לך כמה תפיסות מוטעות לגבי האוניברסיטה.ראשית, רוב האוניברסיטאות מלמדות מדעי המחשב, ולימוד התכנות הוא רק "תופעת לוואי" של זה (לפחות, זאת הגישה הכללית).אם בקורס מסויים אומרים לך לעבוד עם float, אז תעבוד לפי הקורס. זה לא אומר שזה תמיד נכון או תמיד לא נכון, בלי שום קשר לכך שאם אומרים לך את זה בקורס בסיסי הם טועים בגדול. זה נכון שבעולם האמיתי הרבה פעמים עובדים עם float והרבה פעמים עובדים עם double, אבל זו צריכה להיות בחירה מודעת התאם לדרישות ביצועים ודיוק. בינתיים המשימה שלך היא לצלוח את קורס התכנות המצ'וקמק על מנת שתוכל ללמוד דברים לעומק (לדוגמא, קומפילציה).לא בטוח בכלל באיזה שפה תעבוד, ועובדים הרבה במכוון שפות (אבל כנראה לא ALGOL...). בעתיד יתכן שתעבוד עם C++. או עם C. או עם JAVA. או עם LISP. או עם שפה שעוד לא המציאו. אתה לומד C מכמה סיבות טובות (וכמה לא טובות), אז תדע אותה, אבל אל תפסול שום דבר בשלב הזה. קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.