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

עזרה בשפת C- כתיבת קוד שנותן שגיאה


דניאל3008

Recommended Posts

היי לכולם :)

נתקלתי בשתי בעיות בתוכנה שכתבתי :

בשלב הראשון אני אמורה ליצור תוכנה הקולטת שני מספרים שלמים (מותר להניח שאחד מהם הוא 0), תחילה מחשבת חילוק של שלמים, אחר כך את השארית המתקבלת מהחילוק, ולאחר מכן את החילוק ללא שארית בדיוק של 2 ספרות לאחר הנקודה והתבקשנו להשתמש בDOUBLE. הבעיה היא ששתי הפעולות הראשונות בכתבתי עובדות אך השלישית לא, ניסיתי מלא דברים לעשות ושיניתי מלא פעמים אך שום דבר לא עוזר, לדוגמה כאשר אני מכניסה 10 ו-3, אני מקבל שהתשובה היא 3, למרות שזה לא מה שאמור לצאת בדיוק של 2 ספרות לאחר הנקודה.

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

מצורף צילום של הקוד וצילום של הפלט המתקבל.

תודה רבה לעוזרים :yelclap:

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

שלום דניאל,

בקשר לבעיה הראשונה, היות ושני המספרים num1 ו-num2 הם מטיפוס int אז התוצאה של החילוק שלהם תהיה מטיפוס int (מספר שלם, במקרה שלך 3) ורק בהשמה תהיה המרה לdouble ובגלל זה התוצאה שלך היא מספר שלם עם אפסים אחרי הנקודה.

בשביל לפתור את זה תשתמשי בהמרה:

dou_div = (double) num1 / num2

בקשר לבעיה השנייה, על מנת להמיר לascii תעשי המרה ל-int באותה הדרך שעשינו המרה לdouble למעלה.

בהצלחה.

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

תודה רבה לכולם :kiss:

קודם כלתודה אופק זה עבד עכשיו, וגם תודה

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]



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

אה סבבה תודה רבה :) עכשיו אנסה, ואגב עשיתי עכשיו מה שאמרת, וזה נותן לי להכניס אות גדולה :) אבל כשהכנסתי את האות A זה נתן לי את המספר 10, זה לא אמור לתת 65?

אגב גם שאני שמה את האות P זה נותן לי עשר, ובחרתי הפעם את המספרים להיות 8 ו-4 כך שזה לא אמור להיות קשור אליהם

תודה לעוזרים :)

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

מזתומרת? אני לא מבינה ממש איפה אתה מתכוון, מה גורם לבעיה, הנה הקוד העדכני:


[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]


תודה רבה :)

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

ב-scanf, שים רווח אחד לפני ה-c%.

בדרך כלל כשאתה קורא קלט באמצעות scanf אז הוא מדלג על כל תווי ה-whitespace (רווח, טאב, ירידת שורה) ורק אז קורא את הקלט. זה נכון לקלטים כמו d% או f%, אבל לא עבור c% - כשאתה עושה scanf עם c% אז זה קורא תו אחד בודד, בין אם הוא רווח או לא.

אם יש רווח בתוך ה-scanf, אז הוא בכל מקרה ידלג על כל הרווחים, גם אם העברת לו c%.

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

ארכיון

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

×
  • צור חדש...