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

בעיה טריגונומטרית ב- #C: המרה ממעלות לרדיאנים


Wile E Coyote

Recommended Posts

לא מדוייק, DOUBLE או FLOAT, לא שאני מאמין, אבל יכול להיות ש-FLOAT לא מספיק ( כאילו, זה לא שזה לא מספיק, הוא פשוט מתעצל לעגל ).

אי אפשר לדעת איזה משתנה הוא יוצר אוטו'...

ובכל מקרה, כולנו הסכמנו שחסר לו ידע בסיסי, אז חבל להמשיך עם הדיון, לכולנו ברור שסה"כ צריך לעגל, רק הוא לא רוצה להקשיב :]

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

צ'מעו חבר'ה:

קראתי בעיון את התגובות שלכם, נכנסתי לכל הקישורים שנתתם לי והכנסתי לתוכנה את הצעות התיקון שלכם (שאגב לא הניבו תוצאה נכונה).

אין לי צל של ספק שיש לי עוד הרבה ללמוד, ועד אז אני אתקשה למצוא פתרון לבעיות מסוג זה.

אני עדיין לא מסכים עם הטענה ש"ככה עובדים מחשבים". הייתי מתכנת בעבר בסביבת דוס, ולא נתקלתי בדבר כזה שמחשבים "לא מדייקים". אם מחשב מקבל ביטוי כמו קוסינוס של 270 מעלות, התשובה תהיה 0. ככה הטבע רצה. בכל שפה יש שיטה אחרת לחישוב ביטויים מתמטיים, וזה מה שצריך למצוא פה. אומנם אין לי ניסיון בסביבת , אבל יש לי ניסיון בתכנות, ובתכנות מדייקים.

בכל מקרה, אני מודה לכולם על העזרה!!!

למי שלא "נמאס לו" לשמוע אותי (זה בסדר... אני מבין את אלה שנמאס להם... אין בי כעס), הנה לפניכם הבעיה שאני מנסה להכניס לתוכנית באמצעות קוד. אולי בצורה כזו תוכלו למצוא לי שיטת עבודה נכונה. מומלץ טיפה ידע בפיזיקה.

משתמש מכניס 4 פרמטרים לתוכנה:

מהירות של מטוס, כיוון טיסה של מטוס, מהירות רוח וכיוון רוח.

נניח שכיוון הטיסה של המטוס הוא 360 (צפון) ומהירות המטוס היא 500 קשרים.

נניח שהרוח נושבת מכיוון 270 (מערב) בעוצמה של 10 קשרים.

התוכנה אמורה לחשב את מהירותו החדשה של המטוס עקב השפעת הרוח.

בדוגמה שלנו מהירות המטוס בכיוון 360 לא תשתנה, מאחר שכיוון הרוח הוא ב- 90 מעלות בדיוק יחסית לכיוון התקדמות המטוס.

את זה אפשר להוכיח על פי חיבור מהירות המטוס במכפלת מהירות הרוח בקוסינוס הכיוון שלה.

התוצאה תישאר 500 מאחר שקוסינוס 270 הוא 0.

* במציאות זה לא ממש מדויק, אז המבינים בתעופה, אנא התעלמו.

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

אני פשוט לא לגמרי מבין למה אתה עובד ב-C#, נכון, זה נוח, אבל אם אתה מתכוון לעשות עבודות מתמטיות יש שפות תכנות הרבה יותר טובות ( אני לא כל כך מכיר אותם, אבל אני יודע שיש @_@ ).

בכל מקרה, לכל דבר בסיסי שכזה אפשר לכתוב ב-MATLAB בכיף, והוא בהחלט ידייק יותר...

ושוב, אתה צודק ש-COS 270 יתן 0, מה שכבר רשמנו הוא, שזה לא 270, תסתכל מה הוא שולח פנימה, המס' נדפק בדרך, לכן אמרתי לך לשים אותו במשתנה מסוג DOUBLE לפני ולעשות לו ROUNDING / TRUNC אם צריך

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

אני אשמח אם תראה לי תוכנית שכתבת בסביבת dos, שהחזירה 0 בחישוב כזה. נכון לעכשיו, בדקתי בפייתון, #C ו- ++C, ובשלושתן מודפס אותו הדבר.

שים לב שיש פונקציות הדפסה (כמו printf) שמעגלות בעצמן את התוצאה.

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

למה אני עובד ב- #C? ללא סיבה מיוחדת. רציתי להתחיל לתכנת בסביבת , ואף חבר או מקור מידע יכול היה לתת לי תשובה, איזו שפה כדאי ללמוד. נכנסתי לאתר של , אהבתי את הצורה שבה הם מלמדים וההחלטה התקבלה.

הלוואי והייתה לי תוכנית של DOS שכתבתי בעבר.

אני מציע שנעזוב את זה. אני אנסה ללכת לפי העצות שנתתם לי ואמשיך לנבור בחומר הלימוד.

שאלה קטנה ואחרונה (מבטיח):

איך אני דואג שהתשובות שאני מקבל יהיו עם מקסימום שתי ספרות אחרי הנקודה?

ואם כבר - גם שתי ספרות לפני הנקודה...

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

אין כזה דבר...

בהדפסה אתה יכול לבחור פורמט, תחפש .format אם אתה מוציע לEDITBOX או משהו בסגנון

או PRINTF וכדומה להדפסת CONSOLE רגילה...

זה משהו בסגנון של

%2f.2

או איזה שטות שכזאת, לא זוכר

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

במימוש של מונו (גירסאת קוד פתוח של .NET), הקריאה ל COS פשוט משתמשת בקוד של COS של הקומפיילר של C הרגיל:

http://anonsvn.mono-project.com/viewvc/trunk/mono/mono/metadata/sysmath.c?revision=43498&view=markup


#include <math.h>
...
gdouble
ves_icall_System_Math_Cos (gdouble x)
{
MONO_ARCH_SAVE_REGS;

return cos (x);
}

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

כדי שהוא יעגל בדיוק של שתי ספרות אחרי הנקודה תשתמש בפונקציה Math.rand(num,decimals)

כאשר num זה המספר ו-decimals הוא מספר הספרות אחרי הנקודה.

לדוגמא שלך:


Console.WriteLine(Math.Round(Math.Cos(270*Math.PI/180),2));

עריכה: לא שמתי לב שהוא כבר קיבל תשובה לזה.

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

ארכיון

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

×
  • צור חדש...