22-02-2006, 11:32
|
|
|
חבר מתאריך: 22.01.06
הודעות: 11
|
|
בעיה בקוד תכנות בC
טוב אז ככה, התרגיל נותן אפשרות ללחוץ 1 כדי להיכנס לתפריט וללחוץ שם ות.ז שתהיה בת 6 מספרים..
בנוסף יש פונקצית בדיקה שבודקת אם השם קיים כבר במערכת..
הבעיה היא שתמיד הוא מראה כאילו השם לא קיים במערכת..
אני מניחה שזה בגלל שהוא לא מכניס טוב את השם
אם מישהו יוכל לבדוק את הקוד אודה לו מאוד..
קוד:
case 1:
{
scanf("%s%s", shem, tz);
mikum=check_talmid(shem, university);
if ((strlen(tz)!=6) || (mikum!=0))
printf("error\n");
else
{
university.mis_talmid=university.mis_talmid+1;
university.talmidim=(STUDENT*)realloc(university.t almidim, (university.mis_talmid+1)*sizeof(STUDENT));
university.talmidim[university.mis_talmid].name=(char*)calloc(strlen(shem)+1, sizeof(char));
university.talmidim[university.mis_talmid].id=(char*)calloc(7, sizeof(char));
strcpy(university.talmidim[university.mis_talmid].name, shem);
strcpy(university.talmidim[university.mis_talmid].id, tz);
university.talmidim[university.mis_talmid].mis_tzioon=0;
university.talmidim[university.mis_talmid].tzioonim=(TZIOON1*)calloc(2, sizeof(TZIOON1));
}
break;
}
case 2:
{
scanf("%s", shem);
mikum=check_talmid(shem, university);
printf("mikum=%d\n", mikum);
if (mikum==0)
printf("error\n");
else
{
for (i=mikum; i<=university.mis_talmid; i++)
university.talmidim[i]=university.talmidim[i+1];
university.mis_talmid=university.mis_talmid-1;
}
break;
}
בנוסף , הנה הקוד של הפונקציה שבודקת:
קוד:
int check_talmid(char a[], UNI b)
{
int boolean,i,compare;
boolean=0;
for (i=1;i<=b.mis_talmid;i++)
{
compare=strcmp(a,b.talmidim[i].name);
if (a==0)
{
boolean=1;
break;
}
}
if (boolean==0)
i=0;
return i;
}
המבנים שעליהם מדובר הם:
קוד:
typedef struct
{
char course[5];
int tzioon;
} TZIOON1;
typedef struct
{
char *name;
char *id;
TZIOON1 *tzioonim;
int mis_tzioon;
} STUDENT;
typedef struct
{
char name_more[10];
int age;
int salary;
} MORE;
typedef struct
{
MORE *morim;
int mis_more;
STUDENT *talmidim;
int mis_talmid;
} UNI;
|