עבור לתוכן

חידה למתכנתים בשפת C

Featured Replies

פורסם
  • מחבר

זה דיי תלוי בפיתוח שעשו שם לlog...

לפי דעתי השוני הוא דווקא באיך ה CASTING נעשה בקומפילרים, ובמימוש הפקודה PRINTF..

-----------------

הפתרון הנכון:


#include <stdio.h>
#include <math.h>

double round(double); // important line in gnu compiler only

int main(void)
{
double a;
a = log(1000)/log(10);
// we all know that log 1000 / log 10 is 3
printf("if a is %.0lf\n", a);
if ((int)round(a) == 3)
printf("then why isn't this line being print?\n");
}

הפעם זה יעבוד נכון תמיד, רק ב LINUX חשוב להוסיף את השורה המודגשת (כי ROUND היא פקודה של C99 ולא מוגדרת ב DEFAULT של MATH.H), זה גם BUG שלוקח זמן למצוא... (כי בעזרה זה לא מצויין :) )...

פורסם

זה רק מראה כמה קשה לעשות קוד שהוא 100% יביל (portable).

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

פורסם
  • מחבר

זה רק מראה כמה קשה לעשות קוד שהוא 100% יביל (portable).

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

זה לא ממש קשור ל PORTABILITY הבעיה פה... היא יותר קשורה לתכנות נכון (זה שב MICROSOFT זה עבד, זה לא אומר שהקוד כתוב נכון)...

ושוב PORTABILITY זה חשוב לדברים מסוימים ולשיקולים של פיתוח מוצר....

פורסם

היה לי קוד שרשמתי במיקרוסופט (דיי גדול) ואחרי שעברתי ללינוקס הוא פשוט לא עלה שם(אפילו קומפייל לא עשה).

פורסם
  • מחבר

היה לי קוד שרשמתי במיקרוסופט (דיי גדול) ואחרי שעברתי ללינוקס הוא פשוט לא עלה שם(אפילו קומפייל לא עשה).

איזה קוד ? סתם CONSOLE APPLICATION ? השתמשת בספריות מיוחדות או פקודות של WIN32 ?

פורסם

זה לא ממש קשור ל PORTABILITY הבעיה פה... היא יותר קשורה לתכנות נכון (זה שב MICROSOFT זה עבד, זה לא אומר שהקוד כתוב נכון)...

ושוב PORTABILITY זה חשוב לדברים מסוימים ולשיקולים של פיתוח מוצר....

VISUAL CPP זו בדיחה מהלכת בכל מה שנוגע ליבילות (אין תאימות מלאה אחורה אפילו!) ותאימות עם ANSI.

בקשר לתכנות נכון, אם רוצים לקחת את הערך השלם של ערך מסוים ברור שלא צריך להשתמש ישר ב- cast..

וההערה שננתי אולי לא קשורה ישירות לבעיה המוצגת, אבל לדעתי היא נכונה.

פורסם

זה היה DOS APPLICATION

הייתי צריך לעשות משהו כמו CSHELL כזה עם פקודות חיצוניות(הרעיון היה להשתמש בזה בLINUX) משתנים ALIAS היסטוריה וכו. הייתי צריך להתאים את זה ללינוקס, אז כתבתי את זה בVS כי זה היה לי נורא נוח, הכל רץ יפה מאוד, חוץ מהקטע של פקודות חיצוניות זהייתי צריך לבדוק את זה בלינוקס. כשבאתי לבדוק אז שום דבר לא עבד(ללא קשר לפקודות החיצוניות שעדיין לא עשיתי שם). בלי קשר לSYSTEM. הייתי צריך להשתמש בFORKים וכאלה. הייתי צריך לכתוב הכל מחדש כדי להתאים(טוב, רק חלק). ד.א יש גם דברים שלא רצים טוב(או עם באגים לפחות) על DEVCPP ורצים טוב בVS, כך שMS זה לא הכי גרוע בחיים, יש יותר גרועים(בלי להעליב אף אחד).

פורסם
  • מחבר

טוב.. כל פרויקט וה MILAGE שלו...

את הפרויקט סיום בגרות שלי בשפת C (כתבתי תוכנה שאתה יכול לטעון מספר אוביקטים תלת-מימדיים פנימה בו-זמנית, ולשחק עם המיקום והצורה שלהם במרחב), כתבתי את כולו מההתחלה ב LINUX (ופרויקט כזה דורש עבודה עם מסך בצורה גרפית ומקלדת בין היתר), כמובן שהיה צריך להגיש ב DOS, אז פשוט השתמשתי באחד מה DWJ32 להריץ את זה תחת DOS, ולא היתה אף בעיה של תאימות... (הקפדתי לתכנת ככה, ואת הדברים הבעייתים כמו ממשק עם המסך ומקלדת לשים במודולים נפרדים).

ארכיון

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

דיונים חדשים