פורסם 2008 בדצמבר 1316 שנים שלום חברים,נתנו לי תרגיל שאני לא יודע מה לבדוק בו קודם. אודה לכם אם תעזרו לי כי אבדתי.התכנית אמורה לפתור מערכת משוואות בשני נעלמים מהצורה:ax + by = cdx + ey = fאני מקבל את a.b.c.d.e.f.המטרה של התרגיל היא לקבוע האם הישרים נחתכים, מקבילים, מתלכדים. אם נחתכים אז האם הם ניצבים.שלשה בצורה 1 0 0 תיתקל בהודעת שגיאה שהשלשה לא מייצגת ישר.כמובן שאם הישרים נחתכים ויש פתרון יחיד אז צריך להציג אותו (את הX ואת הY שפותרים את המשוואה).אין לי מושג איך להתחיל. אם השלשות מייצגות ישרים זה די קל לבדוק.אבל הלאה אני תקוע לגמרי.תודה רבה מראש לכל העוזרים.
פורסם 2008 בדצמבר 1316 שנים תעשה את זה פשוט מחומר של כיתה י"אדבר ראשון תהפוך את המשוואות למשוואות ישר: y=mx+cזאת אומרת y=(-a/b)x+c/b למשוואה הראשונה ואז כדי לראות אם הישרים נחתכים אתה צריך להשוות את ה m של המשוואותאם הם שווים אז הם מקבילים אם הם הופכים ושלילים אז הם אנכים ואם הם סתם שונים אז הם נחתכים.וכדי לראות עם הם מתלכדים פשוט תשווה בין המשוואות.
פורסם 2008 בדצמבר 1316 שנים מחבר תעשה את זה פשוט מחומר של כיתה י"אדבר ראשון תהפוך את המשוואות למשוואות ישר: y=mx+cזאת אומרת y=(-a/b)x+c/b למשוואה הראשונה ואז כדי לראות אם הישרים נחתכים אתה צריך להשוות את ה m של המשוואותאם הם שווים אז הם מקבילים אם הם הופכים ושלילים אז הם אנכים ואם הם סתם שונים אז הם נחתכים.וכדי לראות עם הם מתלכדים פשוט תשווה בין המשוואות.אבל נגיד אם אני מקבל השלשות:2 1 04 0 1אז Y=2 ו X=4 וזה הפתרון היחיד. איך אני בודק מצב כזה בתכנית?ובמשוואה התחתונה המקדם של Y הוא 0 ואסור לי לחלק בו.אני מסתבך באיך ליצור את כל ההגבלות האלה.
פורסם 2008 בדצמבר 1516 שנים כדי למצוא את הפתרון של נק' החיתוך קודם כל תפתור את השאלה מתמטית.ז"א בטא את X ו Y בעזרת m, n ,p,q כשנגיד m ו n מייצגים את שיפועי הישרים ו q ו p מייצגים את חיתוכם עם ציר ה Y, כמו במשוואה Y = aX + bא"כ גש למחשב ותיצור 4 משתנים עבור m n p q, חשב את ערכם (בעזרת הקלט) כמו ש johndou כבר הראה, וחשב את ערך נק' החיתוך.אם יש מקרים של אפשרויות לחילוק ב 0 באלגוריתם שלך תבדוק את זה מראש בעזרת התניה ומקרים שונים (if..else, או בעזרת switch).
פורסם 2008 בדצמבר 1716 שנים מחבר חבר'ה, כתבתי תכנית שמקבלת שני ישרים מהצורה ax + by =cdx + ey = fמקבל את המקדמים ואמור לדעת מה היחס ביניהם (מקבילים, נחתכים, מתלכדים).כתבתי את הקוד ולפי ריצה יבשה הוא אמור לפעול טוב אך ברגע שאני מריץ את התכנית X וY מקבלים ערכים משוגעים במקום הערכים שכתבתי בתכנית.אין לי מושג איפה הבאג, אולי תוכלו אתם לעזור לי.אודה לכם מאוד.מצ"ב הקוד שכתבתי.תודה רבה מראש לכל העוזרים.[left]#include <stdio.h>int main(){ float a,b,c,d,e,f,x,y; scanf("%f %f %f",&a,&b,&c); scanf("%f %f %f",&d,&e,&f); if((a == 0) && (b == 0) && (c != 0)) { if((d == 0) && (e == 0) && (f != 0)) { printf("Error: Triplet #1 does not represents coefficient of a line.\n"); printf("Error: Triplet #2 does not represents coefficient of a line.\n"); } else printf("Error: Triplet #1 does not represents coefficient of a line.\n"); } else { if((d == 0) && (e == 0) && (f != 0)) { printf("Error: Triplet #2 does not represents coefficient of a line.\n"); } else { if((a*e == b*d) && (b*f == c*e)) { printf("Result: The equations have an infinite number of solutions\n"); } if((a*e == b*d) && (b*f != c*e)) { printf("Result: The equations have no solution\n"); } else { y = ((c*d)-(f*a))/((b*d)-(a*e)); if (a != 0) { x = (c-(b*y))/a; if(x == ((int)x)) { if(y == ((int)y)) printf("Result: The equations have a single solution: x=%d y=%d\n",x,y); else printf("Result: The equations have a single solution: x=%d y=%.3f\n",x,y); } else { if(y == ((int)y)) printf("Result: The equations have a single solution: x=%.3f y=%d\n",x,y); else printf("Result: The equations have a single solution: x=%.3f y=%.3f\n",x,y); } if(((a*b)/(e*d)) == -1) { printf("Normal? Yes\n"); } else { printf("Normal? No\n"); } } else { x = (f-(e*y))/d; if(x == ((int)x)) { if(y == ((int)y)) printf("Result: The equations have a single solution: x=%d y=%d\n",x,y); else printf("Result: The equations have a single solution: x=%d y=%.3f\n",x,y); } else { if(y == (int)y) printf("Result: The equations have a single solution: x=%.3f y=%d\n",x,y); else printf("Result: The equations have a single solution: x=%.3f y=%.3f\n",x,y); } if(((a*b)*(e*d)) == -1) { printf("Normal? Yes\n"); } else { printf("Normal? No\n"); } } } } } return 0;}[/left]ד"א אני משתמש בשיטת השוואת המקדמים.
פורסם 2008 בדצמבר 1716 שנים נראה סבבה (לא ממש התעמקתי בנוסחאות עצמן, אני מניח שהן תקינות).כמה הערות:א. אל תשתמש ב-float, תשתמש ב-double. הוא יותר מדויק ויותר יעיל. שים לב שתצטרך לשנות את ה-scanf וה-printf בהתאם (אני מניח שאם אתה מריץ את התכנית רק עם ערכים שלמים זה לא משנה יותר מדי).ב. שים לב שאתה מדפיס את x ו-y בתור שלמים, אבל הם מטיפוס float. אתה צריך להמיר אותם ל-int לפני ההדפסה אם אתה רוצה להדפיס אותם כ-d%. ייתכן שזו הבעיה שיש לך.
פורסם 2008 בדצמבר 1716 שנים מחבר נגיד ואני מריץ את התכנית עם הקלט:2 0 12 1 0אז התכנית מדפיסה - את המשפט של הפתרון יחיד ואזx=2 y= 1135917313גם כשתיקנתי את ההדפסות של %d עם ההמרה למשל- printf("Result: The equations have a single solution: x=%.3f y=%d\n",x,(int)y);אגב, גם שיניתי את ההגדרות של כל המשתנים לdouble ובקלט הוספתי %lf
פורסם 2008 בדצמבר 1716 שנים ואללה, לא'דע.נסה להדפיס את כל המשתנים, וגם את שלבי הביניים בחישוב של y ותראה מה יצא (אני בספק שזו הבעיה, אבל שווה לבדוק).חוץ מזה, אולי ההמרה לא עבדה (אני אף פעם לא זוכר איך בדיוק עובדים הדברים האלה). נסה להדפיס את y כ-double ולא כ-int, או שתמיר אותו מחוץ ל-printf (כלומר תגדיר int חדש ותשים בו את הערך של y, ואז תדפיס אותו במקום את y).
פורסם 2008 בדצמבר 1716 שנים מחבר ניסיתי, אבל גם זה לא עוזר וY מודפס בתור איזה לא יודע מה, תודה בכל זאת על העזרה.אני אנסה לחפש מקורות עזרה אחרים.
פורסם 2008 בדצמבר 1816 שנים מחבר התוכנה של הויזואל סטודיו 6 לא נותנת לי לעשות דיבאג ועוד יותר לא נותנת לי להריץ את התכנית (ברגע שאני עושה execute מופיע מסך דוס ומיד נסגר)ניסיתי להתקין מחדש אך זה לא עזר. זה הקוד המעודכן:#include <stdio.h>int main(){ double a,b,c,d,e,f,x,y; int y1; scanf("%lf %lf %lf",&a,&b,&c); scanf("%lf %lf %lf",&d,&e,&f); if((a == 0) && (b == 0) && (c != 0)) { if((d == 0) && (e == 0) && (f != 0)) { printf("Error: Triplet #1 does not represents coefficient of a line.\n"); printf("Error: Triplet #2 does not represents coefficient of a line.\n"); } else printf("Error: Triplet #1 does not represents coefficient of a line.\n"); } else { if((d == 0) && (e == 0) && (f != 0)) { printf("Error: Triplet #2 does not represents coefficient of a line.\n"); } else { if((a*e == b*d) && (b*f == c*e)) { printf("Result: The equations have an infinite number of solutions\n"); } if((a*e == b*d) && (b*f != c*e)) { printf("Result: The equations have no solution\n"); } else { y = ((c*d)-(f*a))/((b*d)-(a*e)); if (a != 0) { x = (c-(b*y))/a; if(x == ((int)x)) { if(y == ((int)y)) { y1 = (int)y; printf("Result: The equations have a single solution: x=%d y=%d\n",x,y1); } else { printf("Result: The equations have a single solution: x=%d y=%.3f\n",(int)x,y); } } else { if(y == ((int)y)) { y1 = (int)y; printf("Result: The equations have a single solution: x=%.3f y=%d\n",x,y1); } else { printf("Result: The equations have a single solution: x=%.3f y=%.3f\n",x,y); } } if(((a*b)/(e*d)) == -1) { printf("Normal? Yes\n"); } else { printf("Normal? No\n"); } } else { x = (f-(e*y))/d; if(x == ((int)x)) { if(y == ((int)y)) { y1 = (int)y; printf("Result: The equations have a single solution: x=%d y=%d\n",(int)x,y1); } else { printf("Result: The equations have a single solution: x=%d y=%.3f\n",(int)x,y); } } else { if(y == (int)y) { y1 = (int)y; printf("Result: The equations have a single solution: x=%.3f y=%d\n",x,y1); } else { printf("Result: The equations have a single solution: x=%.3f y=%.3f\n",x,y); } } if(((a*b)*(e*d)) == -1) { printf("Normal? Yes\n"); } else { printf("Normal? No\n"); } } } } } return 0;}
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.