נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: בקשר לשאלה ששאלתי בסי, בניתי תוכנית אך זה

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
nava
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 25 November 2006
מדינה: Israel
משתמש: מנותק/ת
הודעות: 31
נשלח בתאריך: 16 January 2007 בשעה 12:27 | IP רשוּם
ציטוט nava

לא מתקמפייל לי,יש לי 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]);
  }
}

תודה רבה

 

 

חזרה לתחילת העמוד הצג את כרטיס החבר של nava חפש הודעות אחרות של nava
 
Fate
פורומיסט על
פורומיסט על
סמל אישי

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

בשביל זה יש קומפיל.... הוא מציג לך איפה השגיאות...
אם אתה לא מבין מה שהוא רושם אז לפחות תעתיק את זה לכאן שאנחנו לא נצטרך לקמפל את הדבר הזה בראש...
חזרה לתחילת העמוד הצג את כרטיס החבר של Fate חפש הודעות אחרות של Fate
 
צחי@
משתמש חבר
משתמש חבר


הצטרף / הצטרפה: 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 רשוּם
ציטוט nava

תודה על התגובה.

צמצמתי ל 3 טעויות.

זה כותב לי:

בשורות 45, 47, 49 (בשורות של ה SCANF)

זה כותב:

request for member 'year' in 'our_cars' which is of none-aggregate type 'car[9['

אותו דבר כתוב לגבי NAME ו- KM

 

תודה על העזרה

חזרה לתחילת העמוד הצג את כרטיס החבר של nava חפש הודעות אחרות של nava
 
צחי@
משתמש חבר
משתמש חבר


הצטרף / הצטרפה: 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 רשוּם
ציטוט shoshan

אופטופיק:

מומלץ כששולחים קוד לבדוק ש-"אפשר שימוש ב- קודי הפורום בכדי לכתוב את הודעותיך" לא בחור.


__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
nava
משתמש מתחיל
משתמש מתחיל


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

קודם כל המון תודה.

אוקיי...יש 0 טעויות אבל למה זה לא עובד???

תודה.

חזרה לתחילת העמוד הצג את כרטיס החבר של nava חפש הודעות אחרות של nava
 
צחי@
משתמש חבר
משתמש חבר


הצטרף / הצטרפה: 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 רשוּם
ציטוט nava

אני לא יודעת ובשביל הקורס שלי אני גם לא אמורה לדעת.

לא הבנתי למה התכוונת.\אשמח להסבר נוסף.

 

תודה.

 

חזרה לתחילת העמוד הצג את כרטיס החבר של nava חפש הודעות אחרות של nava
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 16 January 2007 בשעה 18:34 | IP רשוּם
ציטוט shoshan

מה שהוא מתכוון זה שתנסי לעבור צעד אחר צעד, או לעצור במקום מסויים ואז לעבוד צעד צעד
כדי לראות מה קורה ולמה זה לא עובד מבחינה לוגית.

__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
nava
משתמש מתחיל
משתמש מתחיל


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

אוקיי...הבנתי

התחלתי עם הקטע הראשון:

קוד:
#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 טעויות אבל כשאני מריצה ז כותב טעות אחת, מישהו יודע למה?

תודה

 

חזרה לתחילת העמוד הצג את כרטיס החבר של nava חפש הודעות אחרות של nava
 
matan
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 16 January 2007 בשעה 22:42 | IP רשוּם
ציטוט matan

אמממ אתה רוצה מחרוזת או מצביע ???

char *name  בפעם האחרונה שבדקתי היה מצביע

 

ו  char name[256] היה מחרוזת תקנו אותי אם אני טועה :\

חזרה לתחילת העמוד הצג את כרטיס החבר של matan חפש הודעות אחרות של matan בקר בדף הבית של matan
 
nava
משתמש מתחיל
משתמש מתחיל


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

מה זאת אומרת אני רוצה מחרוזת או מצביע?

אני רוצה להבין למה התוכנית לא עובדת לי...

תודה.

חזרה לתחילת העמוד הצג את כרטיס החבר של nava חפש הודעות אחרות של nava
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 16 January 2007 בשעה 23:55 | IP רשוּם
ציטוט shoshan

איזו שגיאה את מקבלת ?

למה אין main ?

__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
matan
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 17 January 2007 בשעה 14:20 | IP רשוּם
ציטוט matan

אני לא יודע מי המורה שלך אבל יש לך טעויות מוזרות

 

נסה את הקוד הזה

 

#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 חפש הודעות אחרות של matan בקר בדף הבית של matan
 
matan
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 17 January 2007 בשעה 14:24 | IP רשוּם
ציטוט matan

ותשנה תלולאה האחרונה לזה

 

    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;
        }

חזרה לתחילת העמוד הצג את כרטיס החבר של matan חפש הודעות אחרות של matan בקר בדף הבית של matan
 
nava
משתמש מתחיל
משתמש מתחיל


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

רק חבל שזה לא עובד ולא מתקמפייל
חזרה לתחילת העמוד הצג את כרטיס החבר של nava חפש הודעות אחרות של nava
 
Matan
אורח
אורח


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

אל תשנה לי זה עובד :\

 

הבעיה העיקרית שלך הייתה בלהגדיר את הסטראקט אחי ...

 

תחפש איזה מדריך ....

נ.ב אל תשנה תלולאה  עכשיו שאני רואה זה יאפס את זה...

חזרה לתחילת העמוד הצג את כרטיס החבר של Matan חפש הודעות אחרות של Matan בקר בדף הבית של Matan
 
Matan
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 17 January 2007 בשעה 19:38 | IP רשוּם
ציטוט Matan

http://clang.eitan.ac.il/index.php?doc=chp&id=9
חזרה לתחילת העמוד הצג את כרטיס החבר של Matan חפש הודעות אחרות של Matan בקר בדף הבית של Matan
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה