קריאה מקובץ ב C

  • פותח הנושא BMWE
  • פורסם בתאריך

DecayCell

New member
אבל...

יהיה זה נכון לומר שהקוד הנ"ל הכיל מיני להטוטים עם OOP, ולאו דווקא לולאות פשוטות? נו, עוד סיבה להשתמש ב-GCC.
 

DNile

New member
ממש לא...

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

DecayCell

New member
להטוטים - כוונתי ל-OOP סטנדרטי ../images/Emo3.gif

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

OriIdan

New member
קומפיילר כן משתגע

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

DadleFish

New member
אגב,

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

nosa85

New member
../images/Emo41.gif../images/Emo41.gifעוד שאלה..../images/Emo41.gif../images/Emo41.gif

התוכנית התקמפלה והכל טוב ויפה אבל כשאני מנסה להריץ אותה מיד יש לי שגיאה של ווינדוז וזה מפיק לי דו"ח שגיאות כזה ארוך והתוכנית נסגרת ניסיתי דיבאגניג וזה מה שקיבלתי: "No access voilation (Segmentation Fault) raised in your program" מה זה צריך להיות? זאת פעם ראשונה שאני נתקלת בכזה דבר..
 

nosa85

New member
../images/Emo92.gif..

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

vinney

Well-known member
באיזה מקום בקוד?

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

nosa85

New member
אז ככה..

זה מופיע מיד עם הרצת התוכנית זה מצביע על השורה של הWHILE בקוד הזה:
int item_count(int arr[]) {// A function that counts the items number in an array int i=0; while ( (i<K) || (arr!= -1) ) { i++; } return i; }

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

vinney

Well-known member
העברת מערך כפרמטר מאוד מסוכנת

עדיף להעביר את גודל המערך בפירוש. במקרה שלך את ניגשת לאיבר לא קיים במערך תסתכלי בקריאה לפונקציה הזאת, מה גודל המערך שמועבר, ומה ה K עליו מדובר.
 

nosa85

New member
בגלל זה אני משתמשת בפונקציה

אני בודקת את מספר האיברים, שומרת במשתנה ואז מעבירה את המשתנה לפונקציות האחרות.. K הוא קבוע ששמור בו המספר המקמסמלי של האיברים וההשוואה עם -1 כי אני מאתחלת את כל המערך ען -1ים שמתי לב שהייתה לי טעות קטנה אני צריה && ולא ||, אז תיקנתי את זה, עכשיו זה מדלג על פונקציה שלמה.. (פונקצית קליטת המספרים) למרות שאני קוראת לה בפיורש!
 

nosa85

New member
אוכל לשלוח לך את זה?

איכשהוא בלי להעלות לכאן? לאימייל? מסנג'ר או אייסיקיו!?
 

vinney

Well-known member
תשימי פה

ככה יותר אנשים יוכלו לעזור לך אחרי הכל, אף אחד מאיתנו לא יושב מול הפורום כל היום בלי הפסקה
 

OriIdan

New member
אני לא רואה פונקצית קלט.

לא חושב שיש קשר בין החלפת || ב && לזה שהוא מדלג על פונקציה כי לא ראיתי קריאה לפונקציה.
 

nosa85

New member
יש את הקריאה לפונקציה..

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

OriIdan

New member
לא יודע עם מותר או אסור.

את יכולה לשלוח לי את הקוד ל [email protected] לא מבטיח שיהיה לי זמן לעבור על זה אבל אעשה כמיטב יכולתי.
 

nosa85

New member
שלחתי..

אני מאוד אעריך את זה אם תוכל להעיף מבט בו.. ו
מראש
 
למעלה