כותב |
|
nava משתמש מתחיל

הצטרף / הצטרפה: 25 November 2006 מדינה: Israel
משתמש: מנותק/ת הודעות: 31
|
נשלח בתאריך: 16 January 2007 בשעה 12:27 | | IP רשוּם
|
|
|
|
לא מתקמפייל לי,יש לי 6 טעויות.
תוכלו לעזור לי למצוא אותן?
לתזכורת השאלה היא:
כתבו תוכנית שיהיה בה טיפוס struct car ובו שלושה שדות המייצגים נתונים על מכונית: שני שדות מסוג int שבהם יהיו שנת היצור והקילומטראג' שלו ושדה מסוג char* (מחרוזת) שבו יהיה רשום שם היצרן.
כתבו פונקציה שתקבל כפרמטר משתנה מסוג struct car ותדפיס לפלט פרטים על המכונית, למשל:
A Suzuki 2007 car after 20000 km on the road
כתבו פונקציה שתקבל כפרמטר משתנה מסוג struct car ותחזיר את מחיר מחירון ברגר שלו (ב₪). לפי מחירון ברגר, לכל מכונית יש מחיר בסיסי שהוא 200000 ₪ אם שם היצרן מתחיל ב-Y, 300000 ₪ אם שם היצרן מתחיל ב-R, 10000 ₪ אם שם היצרן הוא Susita ו100000 ₪ בכל מקרה אחר. ממחיר הבסיס יש להחסיר 10000 ₪ על כל שנת הפרש בין שנת היצור לשנה הנוכחית (2007) וכן ₪ אחד על כל ק"מ בקילומטראז'.
כתבו תוכנית שתקבל מהמשתמש פרטים של 10 מכוניות ולאחר מכן תדפיס לפלט את פרטי המכונית הזולה ביותר
והתוכנית שבניתי היא:
struct car { int year; int km; char*name; }; void print_details(car car1) { printf("A %s %d car after %d on the road", car1.name, car1.year, car1.km); } int price (car my_car) { int price; if (*my_car.name=='Y') price=200,000; else if (*my_car.name=='R') price=300,000; else {
if (strcmp(my_car.name,'Susita')==0) price=10,000; } else price=100,000; int n; n=2007-my_car.year; n=n*10,000; price=price-n; price=price-my_car.km; return price; } void main() { car our_cars[9]; int i; for (i=0;i<10;i++) { printf("print the year"); scanf("%d",our_cars.year); printf("print kms"); scanf("%d",our_cars.km); printf("print name"); scanf("%s",our_cars.name); } int index_min=0; int price_min=300000; int j; for(j=0;j<10;j++) { int price_1; price_1=price(our_cars[j]); if (our_cars[j]<price_min) { price_min=price_1; index_min=j; } }
print_details(our_cars[index_min]); } }
תודה רבה
|
חזרה לתחילת העמוד |
|
|
Fate פורומיסט על


הצטרף / הצטרפה: 25 October 2005
משתמש: מנותק/ת הודעות: 571
|
נשלח בתאריך: 16 January 2007 בשעה 13:29 | | IP רשוּם
|
|
|
|
בשביל זה יש קומפיל.... הוא מציג לך איפה השגיאות... אם אתה לא מבין מה שהוא רושם אז לפחות תעתיק את זה לכאן שאנחנו לא נצטרך לקמפל את הדבר הזה בראש...
|
חזרה לתחילת העמוד |
|
|
צחי@ משתמש חבר

הצטרף / הצטרפה: 02 January 2007 מדינה: Israel
משתמש: מנותק/ת הודעות: 209
|
נשלח בתאריך: 16 January 2007 בשעה 13:45 | | IP רשוּם
|
|
|
|
קוד:
#include <stdio.h> #include <string.h>
struct car { int year; int km; char*name; };
void print_details(car car1) { printf("A %s %d car after %d on the road", car1.name, car1.year, car1.km); }
int price (car my_car) { int price; int n; if (*my_car.name=='Y') price=200000; else if (*my_car.name=='R') price=300000; else if (strcmp(my_car.name,"Susita")==0) price=10000; else price=100000;
n=2007-my_car.year; n=n*10,000; price=price-n; price=price-my_car.km; return price; } void main() { car our_cars[9]; int i; for (i=0;i<10;i++) { printf("print the year"); scanf("%d",our_cars.year); printf("print kms"); scanf("%d",our_cars.km); printf("print name"); scanf("%s",our_cars.name); } int index_min=0; int price_min=300000; int j; for(j=0;j<10;j++) { int price_1; price_1=price(our_cars[j]); if (price_1<price_min) { price_min=price_1; index_min=j; } }
print_details(our_cars[index_min]); }
|
|
|
זה מתקמפל אבל לא בהכרח עובד. שימי לב לשגיאות כמו חוסר ב-{ או }, שימוש בגרשיים בודדות (' ') במקום כפולות (" ") לייצוג מחרוזת ושימוש ב-struct לצורך השוואה במקום בשדה מסויים.
בהצלחה 
__________________ דלתות אדריכלים גגות פוליש
|
חזרה לתחילת העמוד |
|
|
nava משתמש מתחיל

הצטרף / הצטרפה: 25 November 2006 מדינה: Israel
משתמש: מנותק/ת הודעות: 31
|
נשלח בתאריך: 16 January 2007 בשעה 15:59 | | IP רשוּם
|
|
|
|
תודה על התגובה.
צמצמתי ל 3 טעויות.
זה כותב לי:
בשורות 45, 47, 49 (בשורות של ה SCANF)
זה כותב:
request for member 'year' in 'our_cars' which is of none-aggregate type 'car[9['
אותו דבר כתוב לגבי NAME ו- KM
תודה על העזרה
|
חזרה לתחילת העמוד |
|
|
צחי@ משתמש חבר

הצטרף / הצטרפה: 02 January 2007 מדינה: Israel
משתמש: מנותק/ת הודעות: 209
|
נשלח בתאריך: 16 January 2007 בשעה 16:08 | | IP רשוּם
|
|
|
|
בעקבות שימוש בקודי פורום נפלה שגיאה בתיקון (i בסוגריים מרובעים לא הופיע).
כמו כן, בשורות של scanf, משתנה הקלט צריך להיות מועבר by reference , לדוגמא:
קוד:
scanf("%d",&our_cars[i].year);
|
|
|
וצריך להקצות זכרון בשביל ה-name, או לפחות לקבוע אורך מחרוזת קבוע ולבדוק שהקלט לא עולה עליו באורכו.
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר


הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 16 January 2007 בשעה 16:27 | | IP רשוּם
|
|
|
|
אופטופיק:
מומלץ כששולחים קוד לבדוק ש-"אפשר שימוש ב- קודי הפורום בכדי לכתוב את הודעותיך" לא בחור.
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
nava משתמש מתחיל

הצטרף / הצטרפה: 25 November 2006 מדינה: Israel
משתמש: מנותק/ת הודעות: 31
|
נשלח בתאריך: 16 January 2007 בשעה 16:33 | | IP רשוּם
|
|
|
|
קודם כל המון תודה.
אוקיי...יש 0 טעויות אבל למה זה לא עובד???
תודה.
|
חזרה לתחילת העמוד |
|
|
צחי@ משתמש חבר

הצטרף / הצטרפה: 02 January 2007 מדינה: Israel
משתמש: מנותק/ת הודעות: 209
|
נשלח בתאריך: 16 January 2007 בשעה 16:54 | | IP רשוּם
|
|
|
|
את יודעת להשתמש ב-DEBUGGER ?
תריצי את התוכנית צעד צעד ותגלי למה זה לא עובד. במידת הצורך תוסיפי BREAKPOINTS במקומות חשודים. אם התוכנית עפה, את תגלי ככה בדיוק איפה בקוד זה קורה ותוכלי לנסות לתקן. אם הבעיה היא לוגית, תוכלי לעקוב אחרי ערכי משתנים בעזרת ה-WATCH.
אגב, אם את לא יודעת להשתמש ב-DEBUGGER, אז זה בדיוק הזמן ללמוד כי אחרת את לא תצליחי להתקדם בעצמך.
בהצלחה !
|
חזרה לתחילת העמוד |
|
|
nava משתמש מתחיל

הצטרף / הצטרפה: 25 November 2006 מדינה: Israel
משתמש: מנותק/ת הודעות: 31
|
נשלח בתאריך: 16 January 2007 בשעה 17:34 | | IP רשוּם
|
|
|
|
אני לא יודעת ובשביל הקורס שלי אני גם לא אמורה לדעת.
לא הבנתי למה התכוונת.\אשמח להסבר נוסף.
תודה.
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר


הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 16 January 2007 בשעה 18:34 | | IP רשוּם
|
|
|
|
מה שהוא מתכוון זה שתנסי לעבור צעד אחר צעד, או לעצור במקום מסויים ואז לעבוד צעד צעד כדי לראות מה קורה ולמה זה לא עובד מבחינה לוגית.
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
nava משתמש מתחיל

הצטרף / הצטרפה: 25 November 2006 מדינה: Israel
משתמש: מנותק/ת הודעות: 31
|
נשלח בתאריך: 16 January 2007 בשעה 19:01 | | IP רשוּם
|
|
|
|
אוקיי...הבנתי
התחלתי עם הקטע הראשון:
קוד:
#include <stdio.h> #include <string.h>
struct car { int year; int km; char*name; };
void print_details(car car1) { printf("A %s %d car after %d on the road", car1.name, car1.year, car1.km); } |
|
|
וזה לא עובד, כשאני מקמפלת זה כותב 0 טעויות אבל כשאני מריצה ז כותב טעות אחת, מישהו יודע למה?
תודה
|
חזרה לתחילת העמוד |
|
|
matan אורח

הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 16 January 2007 בשעה 22:42 | | IP רשוּם
|
|
|
|
אמממ אתה רוצה מחרוזת או מצביע ???
char *name בפעם האחרונה שבדקתי היה מצביע
ו char name[256] היה מחרוזת תקנו אותי אם אני טועה :\
|
חזרה לתחילת העמוד |
|
|
nava משתמש מתחיל

הצטרף / הצטרפה: 25 November 2006 מדינה: Israel
משתמש: מנותק/ת הודעות: 31
|
נשלח בתאריך: 16 January 2007 בשעה 23:00 | | IP רשוּם
|
|
|
|
מה זאת אומרת אני רוצה מחרוזת או מצביע?
אני רוצה להבין למה התוכנית לא עובדת לי...
תודה.
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר


הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 16 January 2007 בשעה 23:55 | | IP רשוּם
|
|
|
|
איזו שגיאה את מקבלת ?
למה אין main ?
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
matan אורח

הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 17 January 2007 בשעה 14:20 | | IP רשוּם
|
|
|
|
אני לא יודע מי המורה שלך אבל יש לך טעויות מוזרות 
נסה את הקוד הזה
#include <stdio.h> #include <string.h>
typedef struct { int year; int km; char name[256]; }car;
void print_details(car car1) { printf("A %s %d car after %d on the road", car1.name, &car1.year, &car1.km); }
int price (car my_car) { int price; int n; if (my_car.name[0]=='Y') price=200000; else if (my_car.name[0]=='R') price=300000; else if (strcmp(my_car.name,"Susita")==0) price=10000; else price=100000;
n=2007-my_car.year; n=n*10,000; price=price-n; price=price-my_car.km; return price; } void main() { car our_cars[9]; int i; int index_min=0; int price_min=300000; int j; for (i=0;i<10;i++) { printf("print the year"); scanf("%d",&our_cars.year); printf("print kms"); scanf("%d",&our_cars.km); printf("print name"); scanf("%s",our_cars.name); }
for(j=0;j<10;j++) { int price_1; price_1=price(our_cars[j]); if (price_1<price_min) { price_min=price_1; index_min=j; } }
print_details(our_cars[index_min]); }
|
חזרה לתחילת העמוד |
|
|
matan אורח

הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 17 January 2007 בשעה 14:24 | | IP רשוּם
|
|
|
|
ותשנה תלולאה האחרונה לזה
for(j=0;j<2;j++) { price_min=300000; index_min=0; price_1=price(our_cars[j]); if (price_1<price_min) { price_min=price_1; index_min=j; }
|
חזרה לתחילת העמוד |
|
|
nava משתמש מתחיל

הצטרף / הצטרפה: 25 November 2006 מדינה: Israel
משתמש: מנותק/ת הודעות: 31
|
נשלח בתאריך: 17 January 2007 בשעה 19:01 | | IP רשוּם
|
|
|
|
רק חבל שזה לא עובד ולא מתקמפייל
|
חזרה לתחילת העמוד |
|
|
Matan אורח

הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 17 January 2007 בשעה 19:34 | | IP רשוּם
|
|
|
|
אל תשנה לי זה עובד :\
הבעיה העיקרית שלך הייתה בלהגדיר את הסטראקט אחי ...
תחפש איזה מדריך ....
נ.ב אל תשנה תלולאה עכשיו שאני רואה זה יאפס את זה...
|
חזרה לתחילת העמוד |
|
|
Matan אורח

הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 17 January 2007 בשעה 19:38 | | IP רשוּם
|
|
|
|
http://clang.eitan.ac.il/index.php?doc=chp&id=9
|
חזרה לתחילת העמוד |
|
|