פורסם 2014 בנובמבר 710 שנים היי לכולם נתקלתי בשתי בעיות בתוכנה שכתבתי : בשלב הראשון אני אמורה ליצור תוכנה הקולטת שני מספרים שלמים (מותר להניח שאחד מהם הוא 0), תחילה מחשבת חילוק של שלמים, אחר כך את השארית המתקבלת מהחילוק, ולאחר מכן את החילוק ללא שארית בדיוק של 2 ספרות לאחר הנקודה והתבקשנו להשתמש בDOUBLE. הבעיה היא ששתי הפעולות הראשונות בכתבתי עובדות אך השלישית לא, ניסיתי מלא דברים לעשות ושיניתי מלא פעמים אך שום דבר לא עוזר, לדוגמה כאשר אני מכניסה 10 ו-3, אני מקבל שהתשובה היא 3, למרות שזה לא מה שאמור לצאת בדיוק של 2 ספרות לאחר הנקודה. בנוסף התבקשתי לאחר מכן לכתוב תוכנה הקולטת אות גדולה ופולטת את הערך האסקי שלה, וזה בכלל לא ברור לי איך לעשות, ניסיתי ככה אבל משום מה זה נותן לי תשובה מבלי שנתן לי להכניס בכלל אות, מה הטעות? מצורף צילום של הקוד וצילום של הפלט המתקבל. תודה רבה לעוזרים
פורסם 2014 בנובמבר 810 שנים שלום דניאל,בקשר לבעיה הראשונה, היות ושני המספרים num1 ו-num2 הם מטיפוס int אז התוצאה של החילוק שלהם תהיה מטיפוס int (מספר שלם, במקרה שלך 3) ורק בהשמה תהיה המרה לdouble ובגלל זה התוצאה שלך היא מספר שלם עם אפסים אחרי הנקודה.בשביל לפתור את זה תשתמשי בהמרה:dou_div = (double) num1 / num2בקשר לבעיה השנייה, על מנת להמיר לascii תעשי המרה ל-int באותה הדרך שעשינו המרה לdouble למעלה.בהצלחה. נערך 2014 בנובמבר 810 שנים על-ידי ofekb
פורסם 2014 בנובמבר 810 שנים מחבר תודה רבה לכולם קודם כלתודה אופק זה עבד עכשיו, וגם תודה needacomp זה עבד עם f.אז הבעיה הראשונה נפתרה אבל השנייה עדיין לא, ברגע שאני מריצה את התוכנה הוא משום מה לא נותן לי כלל אפשרות להכניס אות.. וגם לא הבנתי כ"כ מה הכוונה בלהשתמש בפונקציה בחלק השני כמו שאמרת, זהמה שניסיתי, איך להמשיך [/COLOR][/RIGHT] [LEFT][COLOR=#000000]#include <stdio.h>int main(){ int num1,num2,divide,RestDiv; double dou_div; char capitalLetter; printf("Enter 2 numbers while the second number is different than zero \n"); scanf("%d %d", &num1,&num2); divide=num1/num2 ; printf("The divide result of the two numbers is (int) : %d \n",divide); dou_div=(double) num1/num2 ; RestDiv=num1-divide*num2; printf("The rest of the division is : %d \n",RestDiv); printf("The divide result of the two numbers is (double): %8.2f\n",dou_div); printf("Enter a capital letter \n"); scanf("%c",&capitalLetter); printf("The ASCII value is : %d\n",(int)capitalLetter); getch(); return 0;}[/COLOR][/LEFT] נערך 2014 בנובמבר 810 שנים על-ידי דניאל3008
פורסם 2014 בנובמבר 810 שנים תערוך את ההודעה בבקשה ושים את הקוד בתוך תגית קוד (כפתור עם ציור #, צריך להיכנס למצב מתקדם בשבילו).
פורסם 2014 בנובמבר 810 שנים אולי צריך להוסיף \n (שורות חדשות) ל sscanf ? כדאי להסתכל על ערך החזרה של הפונקציה שאומרת כמה מהקלט היא הצליחה לקלוט.
פורסם 2014 בנובמבר 810 שנים מחבר אה סבבה תודה רבה עכשיו אנסה, ואגב עשיתי עכשיו מה שאמרת, וזה נותן לי להכניס אות גדולה אבל כשהכנסתי את האות A זה נתן לי את המספר 10, זה לא אמור לתת 65? אגב גם שאני שמה את האות P זה נותן לי עשר, ובחרתי הפעם את המספרים להיות 8 ו-4 כך שזה לא אמור להיות קשור אליהם תודה לעוזרים נערך 2014 בנובמבר 810 שנים על-ידי דניאל3008
פורסם 2014 בנובמבר 810 שנים 10 זה שורה חדשה, זה אומר שזה לא קולט את האות, אולי צריך להוסיף עוד כמה (על כל לחיצה של ENTER) למשל בין המספרים הראשונים.
פורסם 2014 בנובמבר 810 שנים מחבר מזתומרת? אני לא מבינה ממש איפה אתה מתכוון, מה גורם לבעיה, הנה הקוד העדכני: [LEFT]#include <stdio.h>int main(){ int num1,num2,divide,RestDiv,smallLetter; double dou_div; char capitalLetter; printf("Enter 2 numbers while the second number is different than zero \n"); scanf("%d %d", &num1,&num2); divide=num1/num2 ; printf("The divide result of the two numbers is (int) : %d \n",divide); dou_div=(double) num1/num2 ; RestDiv=num1-divide*num2; printf("The rest of the division is : %d \n",RestDiv); printf("The divide result of the two numbers is (double): %8.2f\n",dou_div); printf("Enter a capital letter \n"); scanf("%c \n",&capitalLetter); smallLetter=(int)capitalLetter; printf("The ASCII value is :%d \n",smallLetter); getch(); return 0;}[/LEFT] תודה רבה
פורסם 2014 בנובמבר 810 שנים ב-scanf, שים רווח אחד לפני ה-c%.בדרך כלל כשאתה קורא קלט באמצעות scanf אז הוא מדלג על כל תווי ה-whitespace (רווח, טאב, ירידת שורה) ורק אז קורא את הקלט. זה נכון לקלטים כמו d% או f%, אבל לא עבור c% - כשאתה עושה scanf עם c% אז זה קורא תו אחד בודד, בין אם הוא רווח או לא.אם יש רווח בתוך ה-scanf, אז הוא בכל מקרה ידלג על כל הרווחים, גם אם העברת לו c%.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.