שאלות ב- C

netc

New member
שאלות ב- C

התחלנו ללמוד עכשו על ביטויים עם תנאים לוגואים, ובעיקר משפטי if. אז יש לי שאלה ובקשה. המורה נתנה לנו לכתוב תוכנית שקולטת מספר שלם ואז בפלט יש את הערך המוחלט שלו. זה מה שעשיתי:
#include <stdio.h> void main () { int num , a ; printf("Enter A Number"); scanf("%d", &num); if (num==0) printf("The total value is 0"); elseif (num > 0) printf("The total value is %d", num); else a= num * -1 printf("The total value is %d", a); }​
הקוד נראה לכם בסדר? ושאלה שנייה, המורה נתנה: כתוב תוכנית שהקלט 3 מספרים שהם מקדמים של משוואה ריבועית והפלט מספר הפתרונות. קודם כל אין לי מושג כל כך למה היא התכוונה, אם מישהו יכול להסביר לי ולתת לי כיוון...
 

Moridin

New member
תגובה

יש מספר בעיות עם הקוד שלך, אם כי הוא בסדר והוא יעבוד אם הוא יעבור כמה שיפוצים סינטאקטיים מינוריים. 1. הפונקציה main צריכה להחזיר int, ולא void. 2. "ערך מוחלט" באנגלית זה absolute value
3. אין elseif בשפת C. אפשר לכתוב else if. לדוגמה:
if (i==0) printf("0"); else if (i==1) printf("1"); else printf("not 0 nor 1");​
4. בשורה a=num*(-1) שכחת ; בסוף השורה 5. בשביל מה את צריכה עוד משתנה? ניתן להחליף את שתי השורות האחרונות ב-if-ים בשורה:
printf("blablab %d",-num); 6. הבדיקה אם num==0 היא מיותרת, ואפשר להכניס אותה לאחד המקרים האחרים. אפס כפול מינוס אחד זה עדיין אפס...​
 
הסבר לגבי 2

נתונה המשוואה ax^2+bx+c=0 w (אל תתתיחס לW) התוכנית אמורה לקבל את הפרמטרים. a,b,c ולהגיד כמה פתרונות יש.. אתה יכול לנתח את זה אם A=0 אז יש פתרון אחד, אבל אם a=0 וגם b=0 יש אינסוף פתרונות. תמשיך לנתח את זה.. יש הרבה מצבים כאלה... תכין תוכנית..
 

ahab

New member
תיקון קטן

אם a=0 ו-b=0, יש אינסוף פתרונות רק אם c=0. אחרת אין פתרונות.
 

IP yuval

New member
הקוד לא בסדר.

א. אין כזה דבר elseif. זה צריך להיות else if. ב. http://www.tapuz.co.il/tapuzforum/main/Viewmsg.asp?forum=89&msgid=41098420 משוואה ריבועית היא ax^2+bx+c. המקדמים שלה הם a,b וc. מספר הפתרונות של משוואה ריבועית לפי הדלתא שלה b^2 - 4*a*c (שכל זה נמצא בתוך שורש בנוסחת השושרשים). מפה נסה לחשוב לבד. אם אתה עדיין לא מבין מה רוצים ממך, אז תפנה למורה ותגיד לה שלא למדת את זה. בהצלחה.
 

netc

New member
ככה זה אמור להיות?

תתעלמו מהמשתנה sum, אני יודע שהוא מיותר אבל אני מעדיף כרגע לעבוד איתו
#include <stdio.h> void main () { int a , b , c , sum ; printf("Enter 3 Numbers /n"); scanf(" %d, %d, %d " , &a, &b, &c); sum= b*b-4*a*c if (sum==0) printf("יש למשוואה פתרון אחד"); else if (sum > 0) printf("יש למשוואה שתי פתרונות"); else if (sum < 0) printf("אין משוואה פתרונות"); }​
כמו כן אל תתייחסו לעברית...זה לא קריטי כרגע רק תגידו לי אם הקוד בסדר.
 

ahab

New member
נראה בסדר..

שתי הערות: - אין צורך ב-if האחרון. אם sum לא שווה ל-0, ולא גדול מ-0, הוא חייב להיות קטן מאפס. - כדאי לקחת בחשבון מקרים בהם a==0.
 

vinney

Well-known member
למה אתה חושב שSUM מיותר?

אתה מתכוון לזה שאתה יכול להציב את הביטוי בIF כל פעם מחדש? אז זהו שלא כדאי, SUM במקום מאוד בעיניי.
 
למעלה