צריך עזרה-תרגיל ארוך(עשיתי כמעט הכל) - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

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


tal1988

Recommended Posts

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

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

}

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

ארכיון

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

×
  • צור חדש...