לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

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



  #1  
ישן 07-05-2006, 09:25
צלמית המשתמש של tallula
  tallula tallula אינו מחובר  
 
חבר מתאריך: 06.05.06
הודעות: 758
תוכנית פשוטה ב C שלא מצליחה...

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

התוכנית:
#include<stdio.h>

int main()
{
char con='a';
int yesno=1;

printf("\n**********************\n");
printf("** Wellcome to Test **\n");
printf("**********************\nDo you want to continu: ");

while(yesno==1)
{
scanf("%c", &con);
if(con=='y')
{
printf("You choose yes.\n");
yesno=1;
}
else if(con=='n')
{
printf("You choose no.\n*Bye Bye*\n");
yesno=0;
}
else if (con!='y'&&con!='n')
{
printf("You wrong, %c is not valid.\nplease enter yes or no: \n", con);
yesno=1;
}
}

return 0;
}
הפלט:
כשלוחצים 'לא' - מקבלים את הפלט שצריך.
כשלוחצים 'כן' - הפלט הוא:
Do you want to continu: y
You choose yes.
You wrong, you enter a wrong char.
please enter yes or no:
כשלוחצים כל תו אחר הפלט הוא:
Do you want to continu: d
You wrong, you enter a wrong char.
please enter yes or no:
You wrong, you enter a wrong char.
please enter yes or no:

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

נערך לאחרונה ע"י tallula בתאריך 07-05-2006 בשעה 09:29.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #2  
ישן 07-05-2006, 13:50
  Alpha Centauri Alpha Centauri אינו מחובר  
 
חבר מתאריך: 30.04.06
הודעות: 8
בתגובה להודעה מספר 1 שנכתבה על ידי tallula שמתחילה ב "תוכנית פשוטה ב C שלא מצליחה..."

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

התוכנית:
#include<stdio.h>

int main()
{
char con='a';
int yesno=1;

printf("\n**********************\n");
printf("** Wellcome to Test **\n");
printf("**********************\nDo you want to continu: ");

while(yesno==1)
{
scanf("%c", &con);
if(con=='y')
{
printf("You choose yes.\n");
yesno=1;
}
else if(con=='n')
{
printf("You choose no.\n*Bye Bye*\n");
yesno=0;
}
else if (con!='y'&&con!='n')
{
printf("You wrong, %c is not valid.\nplease enter yes or no: \n", con);
yesno=1;
}
}

return 0;
}
הפלט:
כשלוחצים 'לא' - מקבלים את הפלט שצריך.
כשלוחצים 'כן' - הפלט הוא:
Do you want to continu: y
You choose yes.
You wrong, you enter a wrong char.
please enter yes or no:
כשלוחצים כל תו אחר הפלט הוא:
Do you want to continu: d
You wrong, you enter a wrong char.
please enter yes or no:
You wrong, you enter a wrong char.
please enter yes or no:

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


כאשר אתה עושה scanf הקליטה תסתיים רק לאחר לחיצת אנטר, ללא שום התייחסות לסוג הקלט הרצוי.
מאחר ובbuffer יהיה לאחר לחיצת האנטר גם את האות שהקשת וגם את האנטר עצמו,
שהלולאה תתבצע פעמיים - פעם אחת בשביל האות שהקלדת, אחריה תודפס ההודעה המתאימה, ואחרי כן עוד פעם עבור לחצן האנטר (קוד אקסי 10).
עדיף לך להשתמש בפונקציה כמו getch/getchar שמיועדת לקבל תו אחד.

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

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 12:28

הדף נוצר ב 0.04 שניות עם 11 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2025 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר