/* MathLab1.c programma in grado di risolvere problemi riguardo la RETTA. comprende distanza da punti a rette, equazione della retta , perpendicolare,parallela. Copyright (C) 2002 Nicola Piazzolla This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Written by kc */ #include #include main () { int scelta; void Rpass1(); void Parallela(); void perpend(); void distance(); void distanceR(); printf("\t\t\tMATHEMATICA LAB \n"); printf("*****************************************************************\n"); printf("* Premere 1 About me *\n"); printf("* Equazione di una retta passante per un punto Premere 2 *\n"); printf("* Distanza da un punto a una retta Premere 3 *\n"); printf("* Distanza da un punto ad un altro punto Premere 4 *\n"); printf("* Calcolo della Perpendicolarita` Premere 5 *\n"); printf("* Calcolo di una Paralallela passante per i punti.. Premere 6 *\n"); printf("* Premere 7 per uscire dal programma *\n"); printf("*****************************************************************\n"); while(1){ printf("Menu Scelta : "); scanf("%d",&scelta); switch(scelta) { case 1 : printf("Email : kc@penguin.it IRC : penguin.azzurra.org Channel : #penguin.it\n"); break; case 2 : printf("Inserire i punti P(x1,y1) e il rispettivo coefficiente angolare \n"); Rpass1(); break; case 3 : printf("Inserire i punti P(x1,y2) e l`equazione della retta \n"); distanceR(); break; case 4 : printf("Inserire i punti P(x1,y1) e i Punti d`arrivo P(x2,y2) \n"); distance(); break; case 5: printf("Inserire l`equazione della retta per la perpendicolare \n"); perpend(); break; case 6: printf("Inserire l`equazione della retta e il punto Passante P(x1,y1)\n"); Parallela(); break; case 7: printf("Exit"); exit(1); break; default : printf("Scelta non valida \n" ); break; } } } Rpass1() { float y,y1,m,x,x1; float soluzione[4]; printf("Inserire coefficiente angolare\n"); scanf("%f",&m); puts("Inserire la cordinata y1"); scanf("%f",&y1); printf("Inserire la cordinata x1"); scanf("%f",&x1); if(x1>0 && y1>0 && m>0 ) { x1=x1*-1; y1=y1*-1; printf("y%0.1f=%0.1f*(x%0.1f)\n",y1,m,x1); printf("y%0.1f=%0.1fx%0.1f\n",y1,m,m*x1); soluzione[1]=(m*x1)*-1; printf("y%0.1f%0.1fx+%0.1f\n",y1,m*-1,soluzione[1]); printf("y%0.1fx+%0.1f=0\n",m*-1,y1-(m*x1)); return 0;} if(x1>0 && y1>0 && m<0 ) { x1=x1*-1; y1=y1*-1; printf("y%0.1f=%0.1f*(x%0.1f)\n",y1,m,x1); printf("y%0.1f=%0.1fx+%0.1f\n",y1,m,m*x1); soluzione[1]=(m*x1)*-1; printf("y%0.1f+%0.1fx%0.1f\n",y1,m*-1,soluzione[1]); printf("y%0.1fx%0.1f=0\n",m*-1,y1-(m*x1)); return 0;} if (x1>=0 && y1<=0 && m<=0) { x1=x1*-1; y1=y1*-1; printf("y+%0.1f=%0.1f*(x%0.1f)\n",y1,m,x1); printf("y+%0.1f=%0.1fx+%0.1f\n",y1,m,m*x1); soluzione[1]=(m*x1)*-1; printf("y+%0.1f+%0.1fx%0.1f\n",y1,m*-1,soluzione[1]); printf("y+%0.1fx%0.1f=0\n",m*-1,y1-(m*x1)); return 0;} if(x1<0 && y1<0 && m<0) { x1=x1*-1; y1=y1*-1; printf("y+%0.1f=%0.1f*(x+%0.1f)\n",y1,m,x1); printf("y+%0.1f=%0.1fx%0.1f\n",y1,m,m*x1); soluzione[1]=(m*x1)*-1; printf("y+%0.1f+%0.1fx+%0.1f\n",y1,m*-1,soluzione[1]); printf("y+%0.1fx+%0.1f=0\n",m*-1,y1-(m*x1)); return 0;} if(x1<=0 && y1>=0 && m>=0) { x1=x1*-1; y1=y1*-1; printf("y%0.1f=%0.1f*(x+%0.1f)\n",y1,m,x1); printf("y%0.1f=%0.1fx+%0.1f\n",y1,m,m*x1); soluzione[1]=(m*x1)*-1; printf("y%0.1f%0.1fx%0.1f\n",y1,m*-1,soluzione[1]); printf("y+%0.1fx%0.1f=0\n",m*-1,y1-(m*x1)); return 0;} if(x1<=0 & y1<=0 && m>=0) { x1=x1*-1; y1=y1*-1; printf("y+%0.1f=%0.1f*(x+%0.1f)\n",y1,m,x1); printf("y+%0.1f=%0.1fx+%0.1f\n",y1,m,m*x1); soluzione[1]=(m*x1)*-1; printf("y+%0.1f+%0.1fx%0.1f\n",y1,m*-1,soluzione[1]); printf("y+%0.1fx%0.1f=0\n",m*-1,y1-(m*x1)); return 0;} if(x1<0 && y1>0 && m<0) { x1=x1*-1; y1=y1*-1; printf("y%0.1f=%0.1f*(x+%0.1f)\n",y1,m,x1); printf("y%0.1f=%0.1fx%0.1f\n",y1,m,m*x1); soluzione[1]=(m*x1)*-1; printf("y%0.1f+%0.1fx+%0.1f\n",y1,m*-1,soluzione[1]); printf("y+%0.1fx+%0.1f=0\n",m*-1,y1-(m*x1)); return 0;} if(x1>=0 && y1<=0 && m>=0){ x1=x1*-1; y1=y1*-1; printf("y+%0.1f=%0.1f*(x%0.1f)\n",y1,m,x1); printf("y+%0.1f=%0.1fx%0.1f\n",y1,m,m*x1); soluzione[1]=(m*x1)*-1; printf("y+%0.1f%0.1fx+%0.1f\n",y1,m*-1,soluzione[1]); printf("y%0.1fx+%0.1f=0\n",m*-1,y1-(m*x1)); return 0; } else printf("y-y1 ; y+y1 ; se m=0"); } void Parallela() { float y,y1; float c; float x,x1; float soluzione[3]; printf("\nx=") ; scanf("%f",&x); fflush(stdin); printf("\ny="); scanf("%f",&y); fflush(stdin); printf("\nc="); scanf("%f",&c); fflush(stdin); printf("Inserire le cordinate Es. P(1,2)\n"); scanf("%f",&x1); fflush(stdin); scanf("%f",&y1); fflush(stdin); soluzione[1]=(x1*x)+(y*y1); printf("c=%0.1f\n",soluzione[1]*-1); if(y<0 && soluzione[1]<0 ){ printf("%0.1fx%0.1fy+%0.1f=0\n",x,y,soluzione[1]*-1); } if(y>0 && soluzione[1]>0 ){ printf("%0.1fx+%0.1fy%0.1f=0\n",x,y,soluzione[1]*-1); } if(y>0 && soluzione[1]<0) { printf("%0.1fx+%0.1fy%0.1f=0\n",x,y,soluzione[1]*-1); } if(y<0 && soluzione[1]>0) { printf("%0.1fx%0.1fy%0.1f=0\n",x,y,soluzione[1]*-1); } if (y<0 && soluzione[1]==0){ printf("%0.1fx%0.1fy=0\n",x,y); } if ( y>0 && soluzione[1]==0) { printf("%0.1fx+%0.1fy=0\n",x,y); } } perpend() { float y; float c; float x; float perpendicolare[3]; char sn[3],lw[3]; printf("\nx=") ; scanf("%f",&x); fflush(stdin); printf("\ny="); scanf("%f",&y); fflush(stdin); printf("\nc="); fflush(stdin); scanf("%f",&c); fflush(stdin); printf("Visualizzare chiarimenti ? [s\\n] \n"); scanf("%s",sn); if((strcmp(sn,"s")==0)|| (strcmp(sn,"S")==0)){ printf("Che sistema Operativo usi? Linux o Windows? [L\\W] \n"); scanf("%s",lw); printf("Attendere il caricamento pagina.. \n"); if((strcmp(lw,"W")==0)|| (strcmp(lw,"w")==0)){ system("hh http://it.geocities.com/ircopit/perp.htm"); } if((strcmp(sn,"l")==0)|| (strcmp(sn,"L")==0)){ system("netscape http://it.geocities.com/ircopit/perp.htm");} } if(x>0 && y>0 && c<0 ) { printf("%0.1fx+%0.1f-k=0\n",y,x); return 0; } if (x>0 && y>0 && c>0) { printf("%0.1fx+%0.1fy+k=0\n",y,x); return 0; } if(x<0 && y>0 && c>0) { printf("%0.1fx+%0.1fy+k=0\n",y*(-1),x*(-1)); return 0; } if (x>0 && y<0 && c<0) { printf("%0.1fx+%0.1fy-k=0\n",y,x); return 0;} if(x<0 && y<0 && c<0) { printf("%0.1fx+%0.1fy-k=0\n",y*(-1),x*(-1)); return 0; } if(x<0 && y>0 && c>0) { printf("%0.1fx+%0.1fy+k=0\n",y*(-1),x*(-1)); return 0;} if(x<0 & y<0 && c>0) { printf("%0.1fx+%0.1fy+k=0\n",y*(-1),x*(-1)); return 0;} if(x<0 && y>0 && c<0){ printf("%0.1fx+%0.1fy-k=0\n",y*(-1),x*(-1),c); return 0; } if(x>0 && y<0 && c>0){ printf("%0.1fx+%0.1fy+k=0\n",y,x); return 0;} else printf("x+y ; x-y ; se c=0"); } void distance() { float soluzione[4]; float x,x1; float y,y1; printf("Inserire la cordinata x\n"); scanf("%f",&x); fflush(stdin); printf("Inserire la cordinata y\n"); scanf("%f",&y); fflush(stdin); printf("Inserire la cordinata x1\n"); scanf("%f",&x1); fflush(stdin); printf("Inserire la cordinata y1\n"); scanf("%f",&y1); fflush(stdin); soluzione[0]=(x-x1); soluzione[1]=(y-y1); soluzione[2]=pow(soluzione[0],2)+pow(soluzione[1],2); soluzione[2]=sqrt(soluzione[2]); printf("La distanza tra i punti e` %0.2f\n",soluzione[2]); } void distanceR() { float a,b,c; float x,y; float soluzione[4]; printf("\na="); scanf("%f",&a); fflush(stdin); printf("\nb="); scanf("%f",&b); fflush(stdin); printf("\nc="); scanf("%f",&c); fflush(stdin); printf("Inserire il punto passante P(x,y)\n"); printf("\nx="); scanf("%f",&x); fflush(stdin); printf("\ny="); scanf("%f",&y); fflush(stdin); soluzione[1]=a*x+b*y+c; soluzione[2]=pow(a,2)+pow(b,2); soluzione[3]=soluzione[1]/sqrt(soluzione[2]); printf(" _______ \n"); printf("La distanza e` %0.1f \\ \\/%0.1f \n",soluzione[1],soluzione[2]); printf("Quindi .. %0.2f\n",soluzione[3]); }