עבור לתוכן

מתחיל ללמוד C לבד ויש לי בעיה.

Featured Replies

פורסם

אני הולך לפי הספר ויש לי את הקוד הזה :

#include <stdio.h>

int main (void)

{

int a, b, sum;

printf ("PLEASE ENTER THE FIRST NUMBER");

scanf("%b", &a);

printf ("PLEASE ENTER THE SECOND NUMBER");

scanf("%b", &b);

sum = a + b;

printf("THE AMOUNT OF %b AND %b is %b", sum ,a, b);

getchar();

return 0;

}

איך שאני מריץ ולוחץ אנטר אחרי שאני מכניס את המספר הראשון החלון דוס נעלם לי.

למה זה ומה לא עשיתי טוב ?

פורסם

אולי התכוונת לכתוב אחוז d ולא אחוז b בכל המקומות....

פורסם
  • מחבר

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

פורסם

קרא ל-fflush לפני שאתה קורא ל-getchar.

ולהבא, כשאתה כותב כאן קוד, השתמש בטג קוד (כפתור # למעלה) כדי שיוצג בצורה נורמלית.

פורסם
  • מחבר

אתה יכול בבקשה להראות לי מה בדיוק לכתוב (ממש חדש בזה) ?

פורסם

כשאתה מבקש מהמשתמש לכתוב מספר, אתה צריך להשתמש ב-d%, ככה:

 scanf("%d", &a);

ולא ככה:

 scanf("%b", &a);

פורסם
  • מחבר

אוקיי תודה אבל לא הבנתי מה לעשות עם ה-fflush שאמרת לי.

פורסם
  • מחבר

כשאני עושה את זה הוא קופץ לי כשאני מקמפל ל-STDIO.H ומדגיש לי את השורה _CRTIMP int __cdecl fflush (FILE*);

זה מה שרשמתי :

#include <stdio.h>
int main (void)

{

int a , b , c , sum;
printf ("Please Enter The first Number\n");
scanf("%d", &a);
printf ("Please Second The first Number\n");
scanf("%d", &b);
printf ("Please Third The first Number\n");
scanf("%d", &c);
sum = a * b * c;
printf("The sum of %d %d and %b is %d", sum ,a,b,c);

fflush();
getchar();
return 0;

}

וזה מה שקורה שאני מקמפל :

http://img69.imageshack.us/img69/9388/90312375cm6.jpg

פורסם
  • מחבר

אוקיי תודה זה הצליח לי אבל יש לי כמה שאלות.

אני עובד לפי ספר ושם רשום בהתחלה לרשום

#include <stdio.h>
void main (void)

ואם אני רושם ככה זה לא עובד לי.

למה בדיוק ?

ועוד משהו:

אתם אמרתם לי לרשום בסוף:

fflush();
getchar();
return 0;

מה זה נותן ומה זה אומר ?

פורסם

בעקרון


void main (void)
{
fflush();
getchar();
return 0;
}

מה שאתה עושה כאן זה להגדיר פונקציה שנקראת main שלא מחזירה כלום (void לפני שם הפונקציה), אבל בסופה אתה כותב return 0 (מחזיר ערך מספרי). מה שיהיה נכון לעשות זה לשנות את ההגדרה ל


int main (void)
{

פורסם

הספר שלך מיושן ולא לפי התקן. לפי התקן של C, הפונקציה main חייבת להחזיר int, ולא יכולה להחזיר void. קומפיילרים חדשים יותר יסרבו לקמפל תוכנית כזו.

לגבי ה-fflush - הפקודה הזו זורקת את כל המידע שנמצא בקלט.

מה שקורה הוא ככה: שמת את ה-getchar על מנת שהתכנית לא תצא אחרי שהיא מדפיסה את התוצאה.

כשעשית scanf, התכנית ביקשה לקרוא מספר מהמשתמש - אבל המשתמש מכניס מספר ואחריו enter (שהוא תו מיוחד בפני עצמו). ה-scanf קורא רק את המספר, וה-enter עדיין נשאר בקלט, מחכה להיקלט ע"י פקודת קלט נוספת.

getchar בעצם עושה אחד משני דברים:

אם יש משהו שמחכה בקלט, אז getchar ישר יקרא אותו וימשיך הלאה.

אם אין משהו שמחכה בקלט, אז getchar יחכה עד שיהיה (ולכן ישהה את התכנית).

כיוון שה-enter חיכה בקלט, getchar מיד קרא אותו והמשיך הלאה, במקום לחכות למשתמש להכניס קלט נוסף.

מה ש-fflush עושה היא למחוק את המידע שבקלט. כשקראת לה, היא מחקה את ה-enter מהקלט, ואז ל-getchar לא היה שום מידע בקלט, והוא נאלץ לחכות לקלט נוסף.

פורסם

אתה מכיר אולי איזה מדריך טוב ועדכני לשפת C ברשת ? (אני מצטער פשוט לא רציתי לפתוח דיון חדש).

פורסם
  • מחבר

עוד משהו:

למה תמיד התוכנה אומרת לי שהמס' השני הוא הכי גדול ?

#include <stdio.h>
int main(void)

{

int a , b , c;
printf("enter the first number : \n");
scanf("%d", &a);
printf("enter the second number : \n");
scanf("%d", &b);
printf("enter the third number : \n");
scanf("%d", &c);

if (a > b)
printf("the first number is bigger\n");
else

if (a > c)
printf("the first number is bigger\n");
else

if (b > a)
printf("the second number is bigger\n");
else

if (b > c)
printf("the second number is bigger\n");
else

if (c > a)
printf("the third number is bigger\n");
else

if (c > b)
printf("the third number is bigger\n");
else

printf("all numbers equals\n");

fflush(stdin);
getchar();
return 0;

}

ארכיון

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

דיונים חדשים