עבור לתוכן

צריך עזרה-תרגיל ארוך(עשיתי כמעט הכל)

Featured Replies

פורסם

יש לי ת'תרגיל הזה

c.jpg

קיצר עשיתי

#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- אני חושב שיש לי כמה טעויות בסעיף השלישי עם המשוואה הריבועית, אתם יכולים בבקשה להגיד לי מה לא נכון?

תודה!!!

פורסם

דברים מיותרים

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 (אחרי עיגול) וכמובן שוב האפס פחות מיותר

- הוא אופרטור בינארי ואונארי.

חוץ מזה זה נראה בסדר

פורסם
  • מחבר

תודה על התגובה המהירה :yelclap: :yelclap:

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

ואני חושב שיש לי טעות במשוואה הריבועית, נניח הכל שווה ל0 אז זה אינסוף פתרונות לא?

תודה :);)

פורסם

double או float אין הבדל, שניהם טיפוסים של מספר עשרוני (ההבדל רק בגודל שלהם)

אתה צריך לטפל במקרה שגם a=0 b=0 -> ואז אם c=0 יש אינסוף אחרת אין בכלל פתרונות.

דרך אגב פה

x2=((0-num2)-sqrt(delta))/(2*num1);

אתה לא צריך לעשות את ה-float כי ה-sqrt כבר יכניס מספר עשרוני (שיגרום לכל החישוב להיות עשרוני ולא שם)

פורסם
  • מחבר

::)  תיקנתי את זה

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();

}

פורסם

נראה שהפכת את הסדר את a b c.

פורסם
  • מחבר

אללללללללללללללללללללללללה הצלחתי לעשות את הכל :lol: ;D :D:yelclap::hi::xyxthumbs:

ארכיון

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

דיונים חדשים