מתחיל ללמוד C לבד ויש לי בעיה. - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

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


wow

Recommended Posts

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

#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;

}

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

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

קישור לתוכן
שתף באתרים אחרים

כשאני עושה את זה הוא קופץ לי כשאני מקמפל ל-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 לא היה שום מידע בקלט, והוא נאלץ לחכות לקלט נוסף.

קישור לתוכן
שתף באתרים אחרים

עוד משהו:

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

#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;

}

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...