/* Sa se scrie un program care citeste elementele unei figuri necesare pentru calculul ariei sale. Elementele sunt precizate de o litera mare, care defineste figura. Programul afiseaza aria figurii. C-cerc P-patrat D-dreptunghi T-triunghi */ #include #include #include #include #define EROARE -1 #define CERC 0 #define PATRAT 1 #define DREPTUNGHI 2 #define TRIUNGHI 3 #define PI 3.1415 typedef struct { int tip; union { double raza; double lp; double ld[2]; double lt[3]; }fig; }FIG; //citire elemente figura int citfig(FIG *p) { char t[255]; switch(p->tip) { case CERC: { printf("raza= ");scanf("%lf",&p->fig.raza); if (p->fig.raza<=0) { printf("eroare"); return 0; } else return 1; } case PATRAT: { printf("latura= ");scanf("%lf",&p->fig.lp); if (p->fig.raza<=0) { printf("eroare"); return 0; } else return 1; } case DREPTUNGHI: { printf("laturile dreptunghiului= "); scanf("%lf%lf",&p->fig.ld[0],&p->fig.ld[1]); if (p->fig.ld[0]<=0||p->fig.ld[1]<=0) { printf("eroare"); return 0; } else return 1; } case TRIUNGHI: { printf("laturile triunghiului= "); scanf("%lf%lf%lf",&p->fig.lt[0],&p->fig.lt[1],&p->fig.lt[2]); if (p->fig.lt[0]<=0||p->fig.lt[1]<=0||p->fig.lt[2]<=0) { printf("eroare"); getch(); return 0; } else return 1; } default: return 0; } } double aria(FIG *p) { double sp,a,b,c; switch(p->tip) { case CERC: return PI*p->fig.raza*p->fig.raza; case PATRAT: return p->fig.lp*p->fig.lp; case DREPTUNGHI: return p->fig.ld[0]*p->fig.ld[1]; case TRIUNGHI: sp=(p->fig.lt[0]+p->fig.lt[1]+p->fig.lt[2])/2; if ((a=sp-p->fig.lt[0])>0 && (b=sp-p->fig.lt[1])>0 && (c=sp-p->fig.lt[2])>0 ) return sqrt(sp*a*b*c); else { printf("nu formeaza triunghi\n"); getch(); return 0; } default: return 0; } } void main() { FIG f; double a; char lit; for(;;) { printf("tastati una din literele C,D,P,T "); scanf("%c",&lit); switch(lit) { case 'C': f.tip=CERC; break; case 'D': f.tip=DREPTUNGHI; break; case 'P': f.tip=PATRAT; break; case 'T': f.tip=TRIUNGHI; break; default: printf("eroare"); getch(); exit(1); } if (f.tip!=EROARE) break; } if(citfig(&f)==0) { printf("eroare"); getch(); exit(1); } if((a=aria(&f))==0) exit(1); printf("aria figurii =%f \n",a); getch(); }