פורסם 2005 בינואר 1020 שנים יש לי ת'תרגיל הזה קיצר עשיתי #include <stdio.h> #include <conio.h> #include <math.h> int main(){ int num1, num2, num3, sec=0; char letter; float p,S,delta, x1, x2; printf("Please enter the letter: "); scanf("%c",&letter); printf("Please enter the numbers: "); scanf("%d%d%d",&num1,&num2,&num3); if(letter=='C'){ if(num1>23 || num1<0 || num2>59 || num2<0 || num3>59 || num3<0) printf("The time is illegal"); else{ sec=num1*3600+num2*60+num3; if(num1>=0 && num1<13) printf("By %02d:%02d:%02d AM, %d seconds have passed",num1,num2,num3,sec); else printf("By %02d:%02d:%02d PM, %d seconds have passed",num1,num2,num3,sec);} } if(letter=='T'){ if(num1+num2<=num3 || num1+num3<=num2 || num3+num2<=num1) printf("The triangle is illegal"); else{ if(num1==num2 && num2==num3) printf("Equilateral triangle\n"); else if(num1==num2 || num1==num3 || num3==num2) printf("Triangle with 2 equal ribs\n"); if(num1*num1+num2*num2==num3*num3 || num1*num1+num3*num3==num2*num2 || num2*num2+num3*num3==num1*num1) printf("Triangle with straight angle\n"); else if(num1!=num2 && num2!=num3 && num2!=num3) printf("Regular traingle\n"); p=float(num1+num2+num3)/2; S=sqrt(p*(p-num1)*(p-num2)*(p-num3)); printf("The shetah of the traingle is: %0.1f",S); } } if(letter=='E'){ delta=num2*num2-4*num1*num3; if(num1=0 && num2!=0 &&num3!=0){ x1=0-(num3/num2); printf("%0.2f",x1);} else { if(delta<0) printf("No solutions"); if(delta==0){ x1=(0-num2)/(2*num1); printf("%0.2f",x1);} if(delta>0){ x1=((0-num2)+sqrt(delta))/(2*num1); x2=((0-num2)-sqrt(delta))/(2*num1); printf("x1=%0.2f\tx2=%0.2f",x1,x2); } } } getch(); } ושני דברים לא הבנתי, 1- יישור לימין, מה הכוונה? 2- אני חושב שיש לי כמה טעויות בסעיף השלישי עם המשוואה הריבועית, אתם יכולים בבקשה להגיד לי מה לא נכון? תודה!!!
פורסם 2005 בינואר 1020 שנים דברים מיותריםx2=((0-num2)-sqrt(delta))/(2*num1);למה לעשות 0-num2? למה לא לכתוב פשוטhttp://x2=((-num2)-sqrt(delta))/(2*num1);]x2=((-num2)-sqrt(delta))/(2*num1);טעויותx1=0-(num3/num2);וx1=(0-num2)/(2*num1);אתה צריך להמיר ל-double אחרת זה יעשה חילוק שלמים והתוצאה תהיה תמיד int (אחרי עיגול) וכמובן שוב האפס פחות מיותר- הוא אופרטור בינארי ואונארי.חוץ מזה זה נראה בסדר
פורסם 2005 בינואר 1020 שנים מחבר תודה על התגובה המהירה :yelclap: אמממ בקשר לדאבל, לא למדנו את זה.... יעני אין לי בעייה לעשות, אבל זה להגשה על ציון אז לא רוצה שתוריד לי סתם נק', אני יכול לרשום לפני הסוגריים float ואז זה יהפוך את זה לממשי לא? ואני חושב שיש לי טעות במשוואה הריבועית, נניח הכל שווה ל0 אז זה אינסוף פתרונות לא? תודה
פורסם 2005 בינואר 1020 שנים double או float אין הבדל, שניהם טיפוסים של מספר עשרוני (ההבדל רק בגודל שלהם)אתה צריך לטפל במקרה שגם a=0 b=0 -> ואז אם c=0 יש אינסוף אחרת אין בכלל פתרונות.דרך אגב פהx2=((0-num2)-sqrt(delta))/(2*num1);אתה לא צריך לעשות את ה-float כי ה-sqrt כבר יכניס מספר עשרוני (שיגרום לכל החישוב להיות עשרוני ולא שם)
פורסם 2005 בינואר 1020 שנים מחבר : תיקנתי את זה x1=float(0-(num3/num2)); ושאני מכניס נניח 0 6 3 עם האות E זה מחזיר לי: x2=-1.#j x1=-1.#j עריכה אני חושב שאני יודע מה הבעייה, בחלק השלישי על המשוואה הריבועית, אז בתנאי הראשון רשום אם num1=0 והשני והשלישי שונים מאפס, אז באלס אחר כך צריך להוסיף ש num1 שונה מאפס. אז הוספתי וזה לא מדפיס כלום. #include <stdio.h> #include <conio.h> #include <math.h> int main(){ int num1, num2, num3, sec=0; char letter; float p,S,delta, x1, x2; printf("Please enter the letter: "); scanf("%c",&letter); printf("Please enter the numbers: "); scanf("%d%d%d",&num1,&num2,&num3); if(letter=='C'){ if(num1>23 || num1<0 || num2>59 || num2<0 || num3>59 || num3<0) printf("The time is illegal"); else{ sec=num1*3600+num2*60+num3; if(num1>=0 && num1<13) printf("By %02d:%02d:%02d AM, %d seconds have passed",num1,num2,num3,sec); else printf("By %02d:%02d:%02d PM, %d seconds have passed",num1,num2,num3,sec);} } if(letter=='T'){ if(num1+num2<=num3 || num1+num3<=num2 || num3+num2<=num1) printf("The triangle is illegal"); else{ if(num1==num2 && num2==num3) printf("Equilateral triangle\n"); else if(num1==num2 || num1==num3 || num3==num2) printf("Triangle with 2 equal ribs\n"); if(num1*num1+num2*num2==num3*num3 || num1*num1+num3*num3==num2*num2 || num2*num2+num3*num3==num1*num1) printf("Triangle with straight angle\n"); else if(num1!=num2 && num2!=num3 && num2!=num3) printf("Regular traingle\n"); p=float(num1+num2+num3)/2; S=sqrt(p*(p-num1)*(p-num2)*(p-num3)); printf("The shetah of the traingle is: %0.1f",S); } } if(letter=='E'){ delta=num2*num2-4*num1*num3; if(num1=0 && num2!=0 &&num3!=0){ x1=float(0-(num3/num2)); printf("%0.2f",x1);} else { if(num1!=0){ if(delta<0) printf("No solutions"); if(delta==0){ x1=float((-num2)/(2*num1)); printf("%0.2f",x1);} if(delta>0){ x1=((-num2)+sqrt(delta))/(2*num1); x2=((-num2)-sqrt(delta))/(2*num1); printf("x1=%0.2f\tx2=%0.2f",x1,x2); } } } } getch(); }
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.