Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- typedef struct masini
- {
- char *producator,*model,*tip_incarcare,*programe,*tip_afisaj;
- int pret;
- struct masini *urm;
- }nod;
- nod *adaugare(nod *prim,char *producator,char *model,int pret,char *tip_incarcare,char *programe,char *tip_afisaj)
- {
- nod *q,*p;
- p=(nod*)malloc(sizeof(nod));
- p->producator=(char*)malloc(strlen(producator)+1);
- strcpy(p->producator,producator);
- p->model=(char*)malloc(strlen(model)+1);
- strcpy(p->model,model);
- p->pret=pret;
- p->tip_incarcare=(char*)malloc(strlen(tip_incarcare)+1);
- strcpy(p->tip_incarcare,tip_incarcare);
- if(strcmp(tip_incarcare,"frontala")==0)
- {
- p->programe=(char*)malloc(strlen(programe)+1);
- strcpy(p->programe,programe);
- }
- else
- if(strcmp(tip_incarcare,"verticala")==0)
- {
- p->tip_afisaj=(char*)malloc(strlen(tip_afisaj)+1);
- strcpy(p->tip_afisaj,tip_afisaj);
- }
- p->urm=NULL;
- if(p==NULL || p->producator==NULL || p->model==NULL || p->tip_incarcare==NULL)
- {
- printf("Eroare");
- exit(0);
- }
- if(prim==NULL)
- return p;
- else
- if(strcmp(prim->producator,p->producator)>0)
- {
- p->urm=prim;
- return p;
- }
- else
- {
- q=prim;
- while(q->urm!=NULL && strcmp(q->urm->producator,p->producator)<0)
- q=q->urm;
- p->urm=q->urm;
- q->urm=p;
- return prim;
- }
- }
- void afisare(nod *prim)
- {
- nod *q;
- q=prim;
- while(q!=NULL)
- {
- printf("\n%s \t %s \t %d \t %s ",q->producator,q->model,q->pret,q->tip_incarcare);
- if(strcmp(q->tip_incarcare,"frontala")==0)
- {
- printf("%s",q->programe);
- }
- else
- if(strcmp(q->tip_incarcare,"verticala")==0)
- printf("%s",q->tip_afisaj);
- q=q->urm;
- }
- }
- nod *cautare(nod *prim,char producator2[20])
- {
- nod *q;
- q=prim;
- while(q!=NULL && strcmp(q->producator,producator2)!=0)
- q=q->urm;
- return q;
- }
- nod *stergere(nod *prim, char model2[20])
- {
- nod *q,*p;
- if(prim!=NULL)
- {
- if(strcmp(prim->model,model2)==0)
- {
- q=prim;
- prim=prim->urm;
- free(q);
- return prim;
- }
- q=prim;
- while(q->urm!=NULL && strcmp(q->urm->model,model2)!=0)
- q=q->urm;
- if(q->urm!=NULL && strcmp(q->urm->model,model2)==0)
- {
- p=q->urm;
- q->urm=q->urm->urm;
- free(p);
- }
- return prim;
- }
- else
- return prim;
- }
- nod *salvare(nod *prim)
- {
- FILE *f;
- f=fopen("date.in","wt");
- nod *q;
- q=prim;
- while(q!=NULL)
- {
- fprintf(f,"\n%s \t %d \t %d \t %s ",q->producator,q->pret,q->model,q->tip_incarcare);
- if(strcmp(q->tip_incarcare,"frontala")==0)
- fprintf(f,"%s",q->programe);
- else
- if(strcmp(q->tip_incarcare,"verticala")==0)
- fprintf(f,"%d",q->tip_afisaj);
- q=q->urm;
- }
- fclose(f);
- }
- int main()
- {
- nod *prim,*p;
- int optiune,pret;
- char producator[20],model[20],model2[20],producator2[20],tip_incarcare[20],programe[20],tip_afisaj[20];
- prim=NULL;
- do
- {
- printf("\n1. Adaugarea unui nou produs\n");
- printf("2. Afisarea tuturor masinilor de spalat\n");
- printf("3. Cautarea unei masini de spalat dupa model\n");
- printf("4. Stergerea unei masini de spalat dupa producator\n");
- printf("5. Introducere in fisier\n");
- printf("0. Iesire\n");
- printf("Introduceti o optiune: ");
- scanf("%d",&optiune);
- switch(optiune)
- {
- case 1:
- printf("Introduceti producatorul: ");
- fflush(stdin);
- gets(producator);
- printf("Introduceti model: ");
- fflush(stdin);
- gets(model);
- printf("Introduceti pret: ");
- scanf("%d",&pret);
- printf("Introduceti tipul de incarcare: ");
- fflush(stdin);
- gets(tip_incarcare);
- if(strcmp(tip_incarcare,"frontala")==0)
- {
- printf("Introduceti programul: ");
- fflush(stdin);
- gets(programe);
- }
- else
- if(strcmp(tip_incarcare,"verticala")==0)
- {
- printf("Introduceti tipul afiasaj");
- fflush(stdin);
- gets(tip_afisaj);
- }
- prim=adaugare(prim,producator,model,pret,tip_incarcare,programe,tip_afisaj);
- break;
- case 2:
- afisare(prim);
- break;
- case 3:
- printf("Introduceti producatorul pe care il cautati: ");
- fflush(stdin);
- gets(producator2);
- p=cautare(prim,producator2);
- if(p==NULL)
- printf("Eroare");
- else
- printf("\n %s \t %s \t %d \t %s",p->producator,p->model,p->pret,p->tip_incarcare);
- break;
- case 4:
- printf("Introduceti modelul pe care il stergeti: ");
- fflush(stdin);
- gets(model2);
- prim=stergere(prim,model2);
- afisare(prim);
- break;
- case 5:
- salvare(prim);
- break;
- case 0:
- exit(0);
- default:
- printf("Optiune gresita");
- break;
- }
- }while(optiune);
- getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement