Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //header
- #ifndef EXAMEN_H_
- #define EXAMEN_H_
- struct _PUNCT{
- double x,y;
- };
- typedef struct _PUNCT PUNCT;
- struct _PITICI{
- unsigned int np;
- PUNCT *cc;
- };
- typedef struct _PITICI PITICI;
- PITICI citireStructura(FILE*in);
- void afisarePitici(PITICI P);
- int semn(PUNCT P,double a,double b, double c);
- int verificare(PITICI P,double a, double b, double c);
- #endif /* EXAMEN_H_ */
- //c
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #include"examen.h"
- PITICI citireStructura(FILE*in)
- {
- PITICI P;
- int i;
- fscanf(in,"%d",&P.np);
- P.cc=(PUNCT *)calloc(P.np,sizeof(PUNCT));
- if(P.cc==0)
- {
- fprintf(stderr,"Memorie insuficenta.\n");
- exit(EXIT_FAILURE);
- }
- for(i=0;i<P.np;i++)
- {
- fscanf(in,"%lf",&P.cc[i].x);
- fscanf(in,"%lf",&P.cc[i].y);
- }
- return P;
- }
- void afisarePitici(PITICI P)
- {
- int i;
- for(i=0;i<P.np;i++)
- {
- fprintf(stdout,"(%.1lf ,%.1lf) ",P.cc[i].x,P.cc[i].y);
- }
- fprintf(stdout,"\n");
- }
- int semn(PUNCT P,double a,double b, double c)
- {
- int ok;
- ok=a*P.x+b*P.y+c;
- if(ok>0)
- {
- return 1;
- }
- else
- {
- if(ok==0)
- {
- return 0;
- }
- else
- {
- return -1;
- }
- }
- }
- int verificare(PITICI P,double a, double b, double c)
- {
- int ok,i;
- for(i=0;i<P.np;i++)
- {
- if(semn(P.cc[i],a,b,c)==semn(P.cc[i+1],a,b,c))
- ok=1;
- else
- ok=0;
- }
- return ok;
- }
- //main
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #include"examen.h"
- int main(void)
- {
- FILE*in;
- int s,i,ok;
- double x1,y1,x2,y2;
- double a,b,c;
- in=fopen("intrare.txt","r");
- if(in==0)
- {
- fprintf(stderr,"eroare la deschiderea fisierului intrare.txt.\n");
- exit(EXIT_FAILURE);
- }
- FILE*out;
- out=fopen("iesire.txt","w");
- if(out==0)
- {
- fprintf(stderr,"eroare la deschiderea fisieerului iesire.txt.\n");
- exit(EXIT_FAILURE);
- }
- PITICI r,al;
- r=citireStructura(in);
- fprintf(stdout,"casutele piticilor cu scufii rosii se gasesc la urm coordonate.\n");
- afisarePitici(r);
- al=citireStructura(in);
- fprintf(stdout,"casutele piticilor cu scufii albastre se gasesc la urm coordonate.\n");
- afisarePitici(al);
- fscanf(in,"%d",&s);
- for(i=1;i<s;i++)
- {
- fscanf(in,"%lf",&x1);
- fscanf(in,"%lf",&y1);
- fscanf(in,"%lf",&x2);
- fscanf(in,"%lf",&y2);
- a=y1-y2;
- b=x2-x1;
- c=x1*y2-x2*y1;
- ok=verificare(r,a,b,c);
- if(ok==1)
- {
- fprintf(stdout,"da-sfetnicul %d ia dat o solutie valida.\n",i);
- }
- else
- {
- fprintf(stdout,"nu-sfetnicul %d nu ia dat o solutie valida.\n",i);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement