שפת C

shirazeitan

New member
שפת C

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

#include
#include
#include
#include
int main(){
float a, r;
double x;
printf("Please Insert one side of the triangle and one radius");
scanf_s("%f%f", &a, &r);
x =asin (a / 2 * r);
printf("first angel is = %lf\n", x);
_getch();
return 0
 

shirazeitan

New member
code

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
int main(){
float a, r;
double x;
printf("Please Insert one side of the triangle and one radius");
scanf_s("%f%f", &a, &r);
x =asin (a / 2 * r);
printf("first angel is = %lf\n", x);
_getch();
return 0
 

BravoMan

Active member
השאלה שלך לא מובנת לחלוטין.

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

אז אם:
קוד:
a / sin(x) = 2r
a = 2r * sin(x);
a / 2r = sin(x);
x = asin(a / 2r);
אז החישוב שלך בסדר גמור.
רק שבשפת C ברגע שיש מספר שלם שמשתתף בביטוי, כל הביטוי מעוגל למספר שלם, אז את צריכה לכתוב 2.0 כדי לשמור על הדיוק.

מעבר לזה, לא ברור בכלל מה זה אומר:
"אני מקבלת את ההערה אחרי הכנסה של נתונים #ind00"

מה זה "מקבלת הערה"? איפה מקבלת? את יכולה לצלם את המסך שנבין במה מדובר?

בכל מקרה, כשאת מצרפת קוד בפורום, השתמשי בבקשה בעורך הודעות מלא, יש שם כפתור לצירוף קוד (ליד הסמיילי למעלה).
או תשתמשי באתר חינמי כמו pastebin.com

כמו שזרקת קוד עכשיו, אי אפשר להבין כלום, ואז אי אפשר לעזור לך.
 

shirazeitan

New member
המשך

תודה לך על ההתייחסות. אנסה להיות יותר ברורה הפעם
המשימה היא :
משפט הסינוסים קובע כי היחס בין צלע במשולש לסינוס הזווית הנגדית שווה לפעמיים רדיוס המעגל החוסם.
כלומר אם a הוא צלע במשולש ו- &#55349;&#57084; היא זווית מולו R רדיוס המעגל החוסם אותו נקבל כי

הרצה
צלע
רדווס המעגל החוסם את המשולש
א'
9 ס"מ
9 ס"מ
ב'
11 ס"מ
15 ס"מ
ג'
5 מ'
3 ס"מ
כתבו תכנית, המבקשת וקולטת אורך צלע ורדיוס מעגל חוסם ומדפיסה את ערך הזווית הנגדית במעלות.
הקוד שרשמתי
קוד:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
int main(){
	float a, r;
	double x;
	printf("Please Insert one side and one radius");
	scanf_s("%f%f", &a, &r);
	x = asin(a / 2.0 * r);
	printf("the result is = %lf\n", x);
   _getch();
	return 0;
}
ןניסתי להגדיר אץ המשתנים ב INT וב FLOAT . כשאני עושה הרצה (לוחצת על F5) בחישוב של הזווית אחרי שהוא מקבל את הנתונים שאני מקלידה הוא רושם
the result is -1#ind00
שברתי את הראש ולא הצלחתי להבין מה הבעיה ומה לא מוגדר כמו שצריך. וכמו שאמרתי ניסתי להגדיר גם כ FLOAT
 

BravoMan

Active member
אני מתנצל - טעיתי והטעתי אותך:

אכן יש טעות בחישוב: סדר הפעולות.
&nbsp
כשאנו כותבים על דף a / 2r אנחנו בעצם מבינים שצריך להכפיל את r ב-2 ואז לחלק בתוצאה.
אבל בשפת C, אין כיתוב מקוצר כזה, והפעולות מבוצעות בסדר החשבוני משמאל לימין, כלומר, קודם מחלקים שת a ב-2 ואז כופלים ב-r.
&nbsp
כדי לחשב בסדר הנכון את צריכה להוסיף סוגריים ;x = asin( a / (2.0 * r))
שימי לב, שהתוצאה שתקבלי תהיה ברדיאנים, לא במעלות.
&nbsp
אז כמובן שתצטרכי לכפול ב-180 ולחלק ב-π
 

shirazeitan

New member
תודה

נכון אתה צודק, לא חשבתי על זה ממש ממש תודה. עזרת לי מלא !!!!
 

BravoMan

Active member
אין בעד מה.

הערה קטנה לעתיד:
ה "-1#ind00" שקיבלת לא נקרא "הערה".
&nbsp
בשפת תכנות, "הערה" (comment באנגלית) היא סוג של "פתק" בקוד, שעוזר לבני אדם להבין את התוכנית, אבל המחשב מתעלם ממנו.
ב-C רושמים הערה בין /* comment text here */
&nbsp
ייתכן שלימדו אתכם גם לרשום אחרי // אבל זה רק בתקן החדש.
&nbsp
כל מה שתוכנה שלך מדפיסה למסך (או רושמת לקובץ) נקרא "פלט".
&nbsp
אם תשמשי נכון במונחים האלה בשאלות שלך אנשים יבינו אותך יותר בקלות, ויעזרו יותר מהר.
&nbsp
בהצלחה בהמשך לימודים!
 
למעלה