11-06-2009, 00:05
|
|
|
|
חבר מתאריך: 21.12.04
הודעות: 30,021
|
|
כמה הערות:
1. כמו שצוין מעלי - את ה struct שלך, תגדיר מחוץ ל main.
2. "______"___ תעשה int main ולא void main (למה? ככה).
3. כדי לסרוק ב scanf אל תשכח את ה & (בכל השורות של הסריקה לתוך המבנה)
קוד PHP:
scanf ("%d",p_employee[i].age);
צריך להיות:
קוד PHP:
scanf ("%d",&(p_employee[i].age));
אם לא תתקן את זה, התוכנית תקרוס בכל פעם שתנסה להכניס מספר.
4. אתה לא משתמש נכון בהדפסה של "אנשים שמתאימים" בסוף... אתה לא יכול פשוט להחזיר ערך ולצפות שהוא יופיע על המסך. אתה צריך לחשב את הערך שאתה רוצה ורק אח"כ להדפיס אותו עם השורה המתאימה (את הלולאה של חישוב mone שים למעלה, ולמטה תציג את ההדפסה הרלוונטית).
5. תשתדל לסמן ב { } גם דברים של שורה אחת (אפילו שההזחות שלך יפות). זה עוזר לקרוא קוד ולתקן אותו במיוחד כשרוצים להוסיף שורות ואז לך תחפש איפה הוא היה אמור להתחיל / להסתיים.
6. מצ"ב הקוד שלך במצב עובד. תעבור על השינויים ונסה ליישם בפעם הבאה
קוד PHP:
#include <stdio.h> #include <stdlib.h>
int young (struct employee vec[], int size);
struct employee { char name[15]; int age; float salary; } *p_employee;
int main() {
int i, size;
printf ("insert number of employees: "); scanf ("%d",&size); p_employee = (struct employee *) malloc (size * sizeof (struct employee));
for (i=0; i<size; i++) { printf ("insert data of employee %d\n",i+1); printf ("Name: "); scanf ("%s",p_employee[i].name); printf ("Age: "); scanf ("%d",&(p_employee[i].age)); printf ("Salary: "); scanf ("%f",&(p_employee[i].salary)); }
printf ("number of employees founded is: %d\n",young (p_employee, size)); }
int young (struct employee vec[], int size) { int i, mone = 0; float avg_age = 0, avg_salary = 0;
for (i=0; i<size; i++) { avg_age += vec[i].age; avg_salary += vec[i].salary; } avg_age /= size; avg_salary /= size; printf ("Average age: %.2f\n", avg_age); printf ("Average salary: %.2f\n", avg_salary); for (i=0; i<size; i++) { if ((vec[i].salary > avg_salary) && (vec[i].age < avg_age)) { printf ("%s ",vec[i].name); mone ++; } } printf ("Names of employees which suitable the terms are: %d\n",mone); return 0; }
|