פורסם 2011 ביוני 1014 שנים חשבתי תחילה שהבעיה התכנית, אבל אז כדי לבדוק את זה רשמתי סתם איזה משהו #include <stdio.h>void main(){int i;for (i=0;i<9 ; i++) printf(“%d\n”,i);}מריץ , וזה מריץ לי בכלל תכנית אחרונה שעשיתי... שיניתי לתכנית בלי FOR, עובד בסדר, אחרי זה שוב ניסיתי עם FOR, שוב מריץ את התכנית האחרונה שעשיתי..
פורסם 2011 ביוני 1014 שנים אז הבעיה שלך היא עם הקומפיילר, לא קשור ללולאות...באיזה קומפיילר\סביבת עבודה אתה משתמש?נ.ב. אל תשתמש ב-void main אלא int main, בסופו שים return 0, ותמיד תמיד תמיד את התוכן של הלולאה (ה-printf) תעטוף בסוגריים מסולסלים.
פורסם 2011 ביוני 1014 שנים אבל יש לו רק פקודה אחת בתוך הלולאה.. למה לבזבז סתם שורות. במקרים כאלה יש גישות אפילו יותר עצלניות כמו שליfor (i=0;i<9 ; i++) printf(“%d\n”,i);
פורסם 2011 ביוני 1014 שנים שורות עולות לך כסף? עדיף קוד קריא ובטוח מתקלות על פני קוד קצר.בכל מקרה, לא ענית על השאלה שלי.
פורסם 2011 ביוני 1014 שנים מחבר אני עובד עם VS 2008רק הורדתי את התוכנה.לא חושב שהבעיה היא בRETURN ו INT MAINא. ניסיתי להוסיף את זה, לא עזר. ב. במכללה אנחנו עובדים עם אותו VS 2008 ולא זוכר שאי פעם כתבנו ככה..למה אתה ממליץ לכתוב קודים בתוך פונקציות? במיוחד שהקוד כל כך קטן. העדפה אישית ? או מסיבה אחרת?פשוט בדר"כ אנחנו גם ככה כותבים קודים עם קריאות לפונקציות בתוכם, זה לא יתחרבש אם כל הקוד יהיה בנוי מפונקציות?למשל בקוד הזה במקום הVOID לעשות פונקציה ובסוף RETURN 0, הוא יעבוד כמו בהתחלה? #include<reg51.h>sbit C1=P0^6;sbit C2=P0^5;sbit C3=P0^4;unsigned char keyrec();unsigned char segment(unsigned char i);void main(){ unsigned char i,seg; while(1) { i=keyrec(); if(i!=0xff) { while(keyrec()!=0xff); seg=segment(i); P1=seg; } }}unsigned char keyrec(){ unsigned char key=0xff; while(1) { P0=0xf7; if (C1==0) key=1; if (C2==0) key=2; if (C3==0) key=3; P0=0xfb; if (C1==0) key=4; if (C2==0) key=5; if (C3==0) key=6; P0=0xfd; if (C1==0) key=7; if (C2==0) key=8; if (C3==0) key=9; P0=0xfe; if (C2==0) key=0; return(key); }}unsigned char segment(unsigned char i){ unsigned char segment[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; return(segment[i]);}[/i]תודה.
פורסם 2011 ביוני 1014 שנים איך יצרת את הפרוייקט שלך? איזה סוג של פרוייקט, ואיך אתה מקמפל אותו?להשתמש ב-void main זה אפשרי בחלק מהקומפיילרים, אבל זה לא אומר שזה נכון. לפי התקנים של C ו-++C זה אסור. אם במכללה אתם עובדים ככה, זה אומר שאתם עובדים לא נכון. בכל מקרה, זה לא מה שהיה אמור לפתור לך את הבעיה.מה זאת אומרת "לכתוב קודים בתוך פונקציות"? לא ביקשתי ממך לכתוב פונקציה.הסיבה שלא כותבים את הגוף של לולאת for (וגם של if או while) בלי סוגריים מסולסלים היא כי זה מתכון לטעויות. נניח שמישהו רוצה להוסיף שורה ללולאה - הוא בקלות יכול להוסיף אותה בלי לשים לב שאין סוגריים מסולסלים, מה שיגרום לכך שרק השורה הראשונה תהיה באמת בתוך הלולאה. חוץ מזה, זה בד"כ יותר קריא ככה.
פורסם 2011 ביוני 1014 שנים מחבר אתה מחדש לי... בחיים לא שמעתי שלפי התקנים אסור להשתמש ב VOID... אבל אם בVS זה עובד, אז זה כנראה לא כזה קריטי.. בכל אופן, אני אתחיל לרשום כמו שאמרת, אחרי כמה קודים אני כבר אתרגל לזה .INT MAIN משום מה הזכיר לי פונקציה, כנראה שאין קשר.. פרוייקט יצרתי דרך FILE > NEW PROJECT > WIN32 CONSOLE APPLICATIONאחרי זה בחלון WIZARD בחרתי בEMPTY PROJECT וCONSOLE APPLICATION למעלה בTYPEלאחר מכן בSOURCE FILES לחצתי על ,NEW ITEMשם בחרתי בC++ FILEובשם שם הפרוייקט כתבתי בסוף" .C "כשאני בונה תכנית עם קליטה מהמקלדת ואז FOR משום מה זה עובד.. בתכניות אפילו יותר פשוטות זה כבר לא עובד..הנה למשל ככה זה עובד: int a,b,n,i,sum=0;float avrg;scanf ("%d%d",&a,&b); if (a<b) { n=b-a; for (i=(a+1);i<b;i++) { sum=sum+i; printf("%d",i); } avrg=sum/(float)(n-1); printf ("\nSum is:%d\nAverage is:%.2f",sum,avrg); }
פורסם 2011 ביוני 1014 שנים ברור ש-int main הזכיר לך פונקציה, כי זו אכן פונקציה. גם void main זה פונקציה, ללא ערך החזרה. ה-main הוא פונקציה כמו כל פונקציה אחרת (כן, אפשר גם לקרוא לה ממקום אחר בתכנית).בשביל ליצור פרוייקט C רגיל אתה צריך לעשות Empty Project ולא Win32 Console Application.תוודא שאתה עושה לו build מלא כל פעם שאתה משנה אותו, ותוודא שהקוד מתקמפל כהלכה (יכול להיות שקובץ חלון שאומר שהbuild נכשל, ושואל אם להריץ את הקוד שקומפל לפני כן?)וכמו שכבר אמרתי, הבעיה היא לא בקוד שלך, אלא בדרך שאתה בונה את הפרוייקט.
פורסם 2011 ביוני 1014 שנים מחבר אתה מתכוון בחלון שאני מגיע אליו כשאני לוחץ NEW PROJECT, שם ללחוץ על EMPTY PROJECT?בעיקרון במכללה אני בוחר שם WIN32 CONSOLE APPLICATION וזה עובד אבל ניסיתי עכשיו גם לבחור EMPTY PROJECTוזה לא עובד ככה.. רק שהבעיה לא ממש ההרצה אלא הודעת שגיאה שאני מקבל כשאני לוחץ על CTRL+F5Unable to start programC:\Users......The system cannot find the path specifiedעריכה: זה עובד! ניסתי שוב עם CONSOLE כמו שעשיתי לפני זה וזה עובד עכשיו... מוזר ,מוזר מאוד..אגב השגיאה ההיא לפי מה שהבנתי נובעת מכך שהוא מנסה למצוא איזה קובץ MANIFEST, אבל לא מצליח למצוא. מה צריך לעשות במקרים כאלה להבא?בינתיים שיניתי פשוט את הכתובת של הפורייקט לשולחן העבודה ונראה שזה פתר את הבעיה, אבל אולי יש פתרון יותר יעיל?
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.