03-03-2006, 13:35
|
|
|
חבר מתאריך: 15.11.05
הודעות: 13
|
|
אנשים אני חייב עזרה במהירות אפשרית....!!
תראו פתחתי אשכול לפני איזה שבוע הפעם יש בעיה אחרת ....
אני בונה ספר טלפונים....אין אפשרות לאכסן את הרשומות בקבצים כי יש רק אופצייה לזיכרון....
אני מקמפל את התכנית והוא נותן לי בעיה ששמה too many types in declaration
הנה התוכנית :
הקומפיילר מסמן לי בשגיעה את השורה המסומנת באדום...
ציטוט:
#include<stdio.h>
#include<alloc.h>
#include<string.h>
#include<stdlib.h>
struct pbook
{
char fname[20],city[20],street[20];
long id;
long pnum;
long cnum;
}
struct pbook *add(int c)
{
struct pbook *x;
int i=1;
char y,n;
do{
x=(struct pbook *)realloc(x,sizeof(struct pbook)*(i+c));
printf("enter first name\n");
gets(x[c].fname);
printf("enter phone number\n");
scanf("%ld",&x[c].pnum);
printf("cell phone to?\n");
scanf("%c",&n);
if(n=='y')
{
printf("enter cell number\n");
scanf("%ld",&x[c].cnum);
}
printf("enter city\n");
gets(x[c].city);
printf("enter street name\n");
gets(x[c].street);
printf("enter id\n");
scanf("%ld",&x[c].id);
printf("want to add another record? (yes\no)\n");
scanf("%c",&y);
}
while(y=='y');
return(x);
}
void show(int sum,struct pbook *prm)
{
int i;
for (i=0;i<sum;i++)
{
puts(prm[i].fname);
printf("%ld",prm[i].pnum);
printf("%ld",prm[i].cnum);
printf("%ld",prm[i].id);
puts(prm[i].street);
puts(prm[i].city);
}
}
int serch(int sum,struct pbook *pr)
{
char fname2[20];
int i;
printf("enter name to find\n");
gets(fname2);
for(i=0;i<sum;i++)
if(strcmp(fname2,pr[i].fname)==0)
{
puts(pr[i].fname);
printf("%ld",pr[i].pnum);
printf("%ld",pr[i].cnum);
printf("%ld",pr[i].id);
puts(pr[i].street);
puts(pr[i].city);
}
else
break;
return(i);
}
void main_menu()
{
printf("1.add a new record\n");
printf("2.serch by first name\n");
printf("3.show the phone book\n");
printf("4.delete all records\n");
printf("5.delete records one by one\n");
printf("press esc to exit\n\n\n\n");
printf("enter you choise\n");
}
void del(pbook *prb,int c,int sum)
{
pbook *point;
int i;
point=(pbook *)realloc(point,sizeof(pbook)*(sum+i));
for(i=0;i<sum&&i!=c;i++)
point[i]=prb[i];
}
void main()
{
int num=0;
struct pbook *pr;
int a,b;
a=getchar();
main_menu();
switch (a)
{
case '1':
{
pr=(pbook *)realloc(pr,sizeof(pbook)*(num+1));
pr=add(num);
num++;
}
case '2':
serch(num,pr);
case '3':
show(num,pr);
case '4':
free(pr);
case '5':
b=serch(num,pr);
del(pr,b,num);
}
}
|
עזרו לי להבין את הטעות אני חייב לסיים את זה כבר..
תודה לעונים...
|