פורסם 2010 בנובמבר 2615 שנים שלום,אני בונה תוכנה של מחשבון ורציתי לבדוק האם הקלט שלי הוא קלט של FLOAT חיפשתי במלא מדריכים באינטרנט ולא עבד לי אף אחד מהם יש לי כרגע את התוכנה VISUAL STDIO 2008ניסיתי המון דברים ואף אחד מהם לא עבד לי, ד"א כרגע התוכנה שלי פועלת לפי התנאי: if ( f/f == (int)1) {.....}התנאי הזה לא מתקיים לי והוא מקבל כל תו לדוגמא את התו @ חשבתי שאולי זה בגלל שזה מחלק את הערך האסקי של המספר\תו אבל לא אמרתי לו לעשות את זה,בכל מקרה אני קצת אובד עצות..אשמח לעזרה.נ.באני מקבל מספר לדוגמא : 123.6כך שהפונקציה של isdigit לא טובה לי מאחר והיא עובדת על מספרים בודדדים ואני עובד עם מספרים גדולים.דבתודה מראש,יוגב
פורסם 2010 בנובמבר 2615 שנים קודם כל, הדרך הכי טובה לבדוק אם הקלט שלך הוא מספר שלם או לא היא לבדוק את זה עוד במהלך הקריאה. במקום לקרוא את הקלט כ-int או float, פשוט קרא אותו כמחרוזת ואז תבדוק אם מופיעה בו נקודה.ויותר ספציפי לשאלתך: ניסית להשתמש בפונקציה floor ולהשוות את התוצאה?כלומר:if (f == floor(f))?נ.ב. מומלץ שתציין בכותרת באיזו שפה אתה כותב.
פורסם 2010 בנובמבר 2715 שנים מחבר לגבי הכותרת סבבה צודק לפעם הבאה אדע..לגבי מה שאמרת בהתחלה,התנאי שלי מתקיים ממ אחרי הקליטה אבל לבדוק אם יש נקודה זה לא נכון כי יכול ליהיות שייכניסו מספר שלם בלי נקודה,ויכול ליהיות שלא..לגבי הפונקציה פלור האמת לא הכרתי אותה..מה היא עושה בידיוק אתה יכול אולי להרחיב לי עליה קצת? אני לא אוהב להשתמש בפונקציות של אחרים בלי לדעת עליהן קצת.בכל מקרה תודה רבה על התגובה!
פורסם 2010 בנובמבר 2715 שנים למה להבא? אתה יכול לערוך את הכותרת (תערוך את ההודעה הראשונה ושנה שם את הכותרת).זו לא "פונקציה של אחרים", זו פונקציה בחבילה הסטנדרטית של השפה, בדיוק כמו isdigithttp://www.cplusplus.com/reference/clibrary/cmath/floor/
פורסם 2010 בנובמבר 2715 שנים מחבר סבבה אני אשנה עכשיו, לא ידעתי שיש אפשרות כזאת אני חדש בפורום הזה..לגבי הפונקציה שאמרת ניסית אותה עכשיו והיא לא עבדה..זה התקמפל אבל עדיין כשהכנסתי @ זה קיבל את זה והתנאי לא נשבר..אין לי מושג למה זה קורה הדבר הזה..הוא כאילו מקבל את זה אבל בתוכנית עצמה אם אני כותב למשל @ + @ זה כותב לי בסוף " the sum of 0.00 and 0.00 is 0.00"אז הוא כן לא מצליח לקרוא את התו אבל התנאי לא נשבר, אם אכניס את הערך האסקי של f לפונקציה פלור זה עדיין יעבוד? אתה יכול לפרט לי בקטנה מה היא עושה? בקצרה כזה..תודה מראש!
פורסם 2010 בנובמבר 2715 שנים אני מניח שאתה קורא את המספר באמצעות scanf. הפונקציה הזו קוראת את הקלט עד שהיא מגיעה לתו שאותו היא לא יכולה לקרוא. לדוגמה, אם הכנסת את המחרוזת 123@432 אז היא תעצר אחרי ה-432, כי ב-@ היא כבר לא יכולה לטפל. אתה לא מצפה שהמספר יכיל את התו @ איכשהו, נכון?ערך ההחזרה של הפונקציה הוא תמיד מספר האלמנטים שהיא קראה בהצלחה. אם היא לא הצליחה לקרוא כלום, אז היא תחזיר 0.
פורסם 2010 בנובמבר 2715 שנים מחבר כן אני משתמש בSCANF אני יכול להשתמש בתכונה הזאת שלה? ולהשתמש בRETURN? ולהכניס את זה למשתנה ולבדוק האם הוא שונה מ-0
פורסם 2010 בנובמבר 2715 שנים אה..... מה?הדבר הנכון הוא לקרוא את הקלט כמחרוזת (s%) ולא כמספר (f%). אחר כך תוכל לבדוק שהמחרוזת תקינה, ולהמיר את תוכנה למספר באמצעות atof.
פורסם 2010 בנובמבר 2715 שנים למה שתבדוק אם מספר שאתה מקבל הוא שלם או לא?תשתמש ב float, או שתשתמש ב int בלבד (תחליט קודם אם אתה עושה מחשבון למספרים שלמים, או מספרים רציונאליים).אם החלטת לעשות מחשבון רציונאלי, תקבל את הקלט לתוך float, תעשה את העיבודים באמצעות float, ותציג את התוצאה באמצעות float.ז"א:// code...float input_number;//...scanf("%f", &input_number);// more code...float result;result = input_number * input_number + 5;printf("%f", result);
פורסם 2010 בנובמבר 2715 שנים מחבר מה אני עושה עם זה?..זה יהיה נחמד אם מישהו ייתן לי פתרון מלא ולא ייזרוק תשובות אפשריות לאוויר..אני בסה"כ רוצה לבדוק האם הקלט הוא מספר,כל מספר שלם או שבר,ואם כן שייקרה משהו..לא חשוב כרגע מה..
פורסם 2010 בנובמבר 2715 שנים אפשר גם להשתמש ב- sscanf אחרי הקליטה והוידואים במקום strtod.שים לב, גם, שלא ניתן להציג כל מספר שלם בעזרת float, ולכן אתה צריך לבדוק האם ה- float שקיבלת הוא ממש קרוב למספר שלם, ולא שווה ממש למספר שלם (בהנחה וקלטת float, ולא מחרוזת).
פורסם 2010 בנובמבר 2815 שנים מחבר חברה אני אגיד שוב פעם..אולי יותר בברור, אני לא מומחה בשפת סי התחלתי ללמוד לא מזמן בתואר ראשון בהנדסת תוכנה ורצים איתנו בחומר אני גם ככה מתחרפן שאני לא עומד בקצב של המרצה..בואו נילך על הפשוט,אם מישהו יודע אני אשמח אם הוא ייכתוב לי כאן קוד שמסביר איך בודקים האם הקלט שלי הוא מספר כל שהוא.. ( אצלי הוא בFLOAT)תודה מראש
פורסם 2010 בדצמבר 215 שנים א. מחרוזת היא מערך של תווים, ולכן לכל תו במחרוזת ניתן לגשת כמו לתא רגיל במערך של תווים (או בעזרת מצביע אם תרצה).ב. קרא את המספר שלך לתוך מערך תווים, ולא לתוך משתנה מספרי.ג. עבור תו תו במערך התווים ובדוק מה יש שם: 1. אם מספר (למעשה סיפרה בין 0 ל-9), אז זה בסדר. 2. אם נקודה ראשונה, אז זה בסדר, אבל רק בתנאי שאחריה יש עוד סיפרה. 3. אם מדובר בנקודה שניה ומעלה - אז זה כבר לא מספר. 4. אם מדובר בכל תו אחר - זה לא מספר. 5. כמובן שאם מדובר במחרוזת ריקה - זה לא מספר.הרעיון הוא שמספר הוא מהצורה XXXXX.XXXXX, כאשר הנקודה היא אופציונלית, והמספר יכול להיות גם מהצורה XXXXX (למשל "12345" - רק ספרות), או מהצורה XXXXX. (מתחיל בנקודה ואחריו ספרות "1234." ), אבל לא משהו כמו ".1234" (מתחיל בספרות ומסתיים בנקודה).הנה קוד ממש ממש בסיסי, שאפשר לשפר אותו כדי לבצע את הנ"ל:#include <stdio.h>void main(){ char str[50]; int i; printf("Enter String: "); scanf("%s", &str); i=0; while (str[i]!= '\0') { printf("char %d: %c\n", i, str[i]); i++; } // end while printf("The string you entered: %s", str);} // end main
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.