Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <conio.h>
- #include <string.h>
- #include <stdlib.h>
- /* tipul nodului arborelui */
- typedef struct nod_arbore {
- char *nume;
- int punctaj;
- struct nod_arbore *stang,*drept;
- }nod;
- /* prototipurile functiilor */
- nod *citireFisier(nod*);
- nod *adauga(nod*,char*,int);
- void afisare(nod*);
- nod *cautare(nod*,char*);
- void main(void)
- {
- nod *radacina,*p;
- char nume[21];
- int opt;
- radacina=NULL;
- clrscr();
- radacina=citireFisier(radacina);
- if(radacina==NULL) {
- printf("Arbore vid!");
- getch();
- }
- else {
- do {
- printf("\n\n1. Afisare punctaje concurenti");
- printf("\n2. Afisare punctaj pentru un concurent");
- printf("\n0. Terminare program");
- printf("\nOptinea: "); scanf("%d",&opt); fflush(stdin);
- switch(opt) {
- case 1: afisare(radacina); getch(); break;
- case 2: printf("\nNumele concurentului: ");
- scanf("%s",nume);
- if((p=cautare(radacina,nume))!=NULL)
- printf("\n%s are punctajul:
- %d",p->nume,p->punctaj);
- else
- printf("\n%s nu a concurat!");
- 1
- getch(); break;
- case 0: printf("\nProgram terminat. Apasati o tasta
- ...");
- getch(); break;
- deafult: printf("\nOptiune gresita!"); getch();
- }
- }while(opt!=0);
- }
- }
- nod *citireFisier(nod *rad)
- {
- FILE *f;
- char nume[31];
- int pctj;
- f=fopen("concurs.txt","rt");
- if(f==NULL) {
- printf("\nEroare la deschidere fisier!"); getch();
- return rad;
- }
- while(fscanf(f,"%s %d",nume,&pctj)!=EOF)
- rad=adauga(rad,nume,pctj);
- fclose(f);
- return rad;
- }
- nod *adauga(nod *p,char *nume,int pctj)
- {
- if(p==NULL) { /* adaugare nod nou in arbore */
- p=(nod *)malloc(sizeof(nod));
- if(p==NULL) {
- printf("Eroare la alocare memorie!"); getch();
- return NULL;
- }
- p->nume=(char *)malloc(strlen(nume)+1);
- if(p->nume==NULL) {
- printf("Eroare la alocare memorie!"); getch();
- return NULL;
- }
- strcpy(p->nume,nume);
- p->punctaj=pctj;
- p->stang=p->drept=NULL;
- }
- else {
- if(pctj>p->punctaj) /* adauga in subarborele stang */
- p->stang=adauga(p->stang,nume,pctj);
- else /* adauga in subarborele drept */
- p->drept=adauga(p->drept,nume,pctj);
- }
- return p;
- }
- void afisare(nod *q)
- {
- if(q!=NULL) {
- afisare(q->stang);
- printf("\n%s %d",q->nume,q->punctaj);
- afisare(q->drept);
- }
- 2
- }
- nod *cautare(nod *p,char *nume)
- {
- nod *q=NULL;
- if(p!=NULL) {
- if(strcmp(p->nume,nume)==0)
- q=p;
- else {
- if(q==NULL)
- q=cautare(p->stang,nume);
- if(q==NULL)
- q=cautare(p->drept,nume);
- }
- }
- else
- q=NULL;
- return q;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement