double ובדיקת מחרוזת ..

Ron 417

New member
double ובדיקת מחרוזת ..

התוכנית צריכה לקבל מספר מטיפוס double ,אבל היא חייבת לוודא שלפחות האיבר הראשון לא שונה מהמספרים 0 עד 9 . איך אני יכול לוודא ,כאשר אני עובד עם double , שהתו הראשון שהמשתמש הקיש ,הוא מספר בין 0 ל 9 ? כשאני מקיש למשל p והקוד הוא double n ; printf("Insert:"); scanf("%lf%,&n); הערך של n הוא מינוס מספר : -9.2559631349317831e+061 אבל כאשר אני מקיש מספר שלילי ,הערך של n יהיה אותו מספר שלילי. ---------------- בקיצור הבעיה היא שצריכים להיות 2 פלטים שונים עבור הקלט. 1)אם המספר שלילי : פלט שמספר שלילי 2)אם התו הראשון שהוקש שונה מ 0 עד 9 ...הודעת שגיאה איך אני מזהה את המצב השני מבלי להשתמש ב gets(arr) ???mmm ?? תודה
 

avinamal

New member
ניסית לקרוא את התו הראשון כ char?

scanf("%c %f", &c, &num)
 

Ron 417

New member
זה לא ייקרא

מבטיח לך. הוא יקבל רק את הקרקטר הראשון של השורה שתרשום. נניח והקשת: 7890 ,אז c=7 ו num=ZEVEL . בכל מקרה ,כבר מצאתי תחלופה הרבה יותר נוחה ,ע''י קליטה למשתנה double ובנוסף אל תוך מערך {את מה שנשאר לאחר שהקשת ENTER). יש לי בעיה חדשה: נגדיר double n; ש לי תוכנית לדוגמא שאני צריך לעבוד על פיה. כאשר אני מקיש למשל 54.543 אצלי ,זה מוחשב כ 54.542999999999999 . כאשר אני מקיש את זה בתוכנית לדוגמא , הפלט הוא 54.543000 . יש לכם רעיון מה צריך לשפר כדי שיהיה זהה ? איך אני יכול לעגל את זה? תודה מראש
 

asm32

New member
יש דיוק אחרי הנקודה ב Printf

לדוגמא :
printf("%.3lf",x);​
ידייק 3 ספרות אחרי הנקודה וכו...
 

asm32

New member
ככה

קודם כל תבדוק מה scanf מחזירה(scanf תחזיר 0 במידה והיא נכשלה לקלוט מה שביקשת,במקרה שלך עם המשתמש יקיש p אז scanf תיכשל ותחזיר 0) אחרי שבדקת מה scanf החזירה פשוט תבדוק אם ההמספר קטן מ0 או גדול מ9 זה הכל
 
למעלה