void Leg::draw() { glPushMatrix(); glTranslatef(posX, posY, posZ); //coxa glPushMatrix(); glRotatef(thighAng,1,0,0); glRotatef(90,1,0,0); glPushMatrix(); colors[2]->paint(); drawSolidCylinder(0.6,0.7, 5.9); glPopMatrix(); glPushMatrix(); colors[1]->paint(); if(side == RIGHT) { glTranslatef(0.3,0,0); glRotatef(-5,0,1,0.2); } else { //LEFT glTranslatef(-0.3,0,0); glRotatef(5,0,1,0.2); } glRotatef(3, 1, 0, 0); drawSolidCylinder(1.0,1.6, 5.5); glPopMatrix(); glPopMatrix(); //joelho glPushMatrix(); colors[1]->paint(); glTranslatef(0, -6.5*cosseno(thighAng),-6.5*seno(thighAng)); glutSolidSphere(0.99, 10,10); glPopMatrix(); //canela glPushMatrix(); glTranslatef(0, -6.5*cosseno(thighAng),-6.5*seno(thighAng)); glRotatef(shuttleAng, 1,0,0); //canela glPushMatrix(); colors[1]->paint(); glRotatef(90,1,0,0); drawSolidCylinder(0.95, 1.6, 5); glPopMatrix(); //pe� glPushMatrix(); colors[2]->paint(); glTranslatef(0, -5, 1); glScalef(2,1,3); glutSolidCube(1); glPopMatrix(); glPopMatrix(); glPopMatrix(); }
/*--------------------------------------------------*/ int main(){ double ang, s, s1, s2; int pid; int n; int pipe1[2], pipe2[2]; printf("Digite o angulo: "); scanf("%lf", &ang); printf("Digite o numero de termos: "); scanf("%d", &n); ang = ang * PI / 180; pipe(pipe1); pid = fork(); if ( pid > 0 ){ pipe(pipe2); pid = fork(); if ( pid > 0 ){ close(pipe1[1]); close(pipe2[1]); read(pipe1[0],&s1,sizeof(double)); read(pipe2[0],&s2,sizeof(double)); s = s1 + s2; printf("Seno: %f\n", s); close(pipe1[0]); close(pipe2[0]); wait(NULL); wait(NULL); } else{ close(pipe1[0]); close(pipe1[1]); close(pipe2[0]); s2 = seno(ang,n/2+1,n); write(pipe2[1],&s2,sizeof(double)); close(pipe2[1]); } } else{ close(pipe1[0]); s1 = seno(ang,1,n/2); write(pipe1[1],&s1,sizeof(double)); close(pipe1[1]); } }
void main(int argc, char const *argv[]) { pid_t p1, p2; double x; int shmid,n; double *memoria; printf("Digite x e n:\n"); scanf("%lf %d", &x, &n); x = (x * PI)/180; shmid = shmget(CHAVE, 2 * sizeof(double), 0600 | IPC_CREAT); if (shmid < 0) { printf("Erro na criação da area de memoria"); } memoria = shmat(shmid, 0, 0); if (memoria < 0) { printf("Erro na alocacao da area de memoria"); } p1 = fork(); if (p1 > 0) { p2 = fork(); if (p2 > 0) { wait(NULL); wait(NULL); printf("Seno: %f\n", memoria[0] - memoria[1]); shmdt(memoria); shmctl(shmid,IPC_RMID,NULL); } else { memoria[0] = seno(x, 1, n); shmdt(memoria); } } else { memoria[1] = seno(x, 3, n); shmdt(memoria); } }
int main(void) { double angulo; int precisao; freopen("e26.txt", "r", stdin); freopen("s26.txt", "w", stdout); scanf("%lf %d", &angulo, &precisao); while (angulo >= 0.0) { printf("sen(%.2lf): %.4lf, ", angulo, seno(angulo, precisao)); if (angulo != 90.0 && angulo != 270.0) { printf("cos(%.2lf): %.4lf, ", angulo, cosseno(angulo, precisao)); printf("tan(%.2lf): %.4lf", angulo, tangente(angulo, precisao)); } else { printf("cos(%.2lf): %.4lf ", angulo, cosseno(angulo, precisao)); } printf("\n"); scanf("%lf %d", &angulo, &precisao); } fclose(stdin); fclose(stdout); return 0; }
int main(int argc, char **argv) { int c, op=0, op2=0, x, flag=0; double *vecX, *vecY, limiteI = 0.0, limiteD=1.0, h=0.1; double auxPaso,auxPaso2; //auxPaso es para saber si el h es correcto. printf("Final Programacion concurrente."); printf("\nProfesor: Eschoyez, Maximiliano Andrés. "); printf("\nAlumno: Mina, Franco Ignacio."); do{ printf("\n\n1. Ingresar Datos.\n2. Elegir funcion."); printf("\n3. Calcular\n4. Salir."); scanf("%d",&op); switch(op){ case 1:{ printf("Ingrese el limite izquierdo: "); scanf("%lf",&limiteI); printf("Ingrese el limite derecho: "); scanf("%lf",&limiteD); do{ printf("Ingrese el paso (en caso de que sea invalido"); printf(" el h se ingresa otra vez): "); scanf("%lf",&h); auxPaso = modf((limiteD - limiteI) / h ,&auxPaso2); printf("\n--------------------------------\n"); }while(auxPaso > 0); break; } case 2:{ c =(int) auxPaso2; vecX = (double*) malloc(c * sizeof(double)); vecY = (double*) malloc(c * sizeof(double)); vector(limiteI, vecX, h, auxPaso2); do{ printf("\n\n1. F(x)= X \n2. F(x)= (2/3)*X^2 \n3. F(x)= sen(x)"); printf("\n4.Salir\n Elija una opcion: "); scanf("%d",&op); switch(op2){ case 1:{ lineal(vecX, vecY, c); break; } case 2:{ cuadrado(vecX, vecY, c); break; } case 3:{ seno(vecX, vecY, c); break; } case 4:{ break; } default:{ printf("\nOpcion no valida"); } } }while(op2 != 4); flag++; break; } case 3:{ if(flag != 0){ //aca calcula } else{ printf("\nPor favor eliga alguna funcion"); printf(" con la opcion 2"); } break; } case 4:{ printf("\nEl programa finalizara"); break; } default:{ printf("\nOpcion incorrecta"); } } }while(op != 4); return 0; }
void biseccion(int opcion) { int *ptPolinomio, grado; int n; float li,ls,e,d,a,z,ex=2.7182818284; float fa,fb,pm,fx; if(opcion==DEFINE_POLINOMIO){ printf("Define el grado del polinomio:\n"); scanf("%d", &grado); ptPolinomio = definePolinomio(grado); leePolinomio(ptPolinomio, grado); } printf("Ingresa el Limite inferior : \n"); scanf("%f",&li); printf("Ingresa el Limite Superior : \n"); scanf("%f",&ls); printf("Ingresa el Error de tolerancia : \n"); scanf("%f",&e); pm=(li+ls)/2; switch(opcion) { case 1: fa=seno(li); fb=seno(ls); fx=seno(pm); break; case 2: fa=senoCuadrado(li); fb=senoCuadrado(ls); fx=senoCuadrado(pm); break; case 3: fa=exponente(li); fb=exponente(ls); fx=exponente(pm); break; case 4: fa=senoCoseno(li); fb=senoCoseno(ls); fx=senoCoseno(pm); break; case 5: fa=evaluaPolinomio(li, ptPolinomio, grado); fb=evaluaPolinomio(ls, ptPolinomio, grado); fx=evaluaPolinomio(pm, ptPolinomio, grado); break; } a=(ls-li); if(a<0){ d=(-1*a); }else{ d=a; } if (d<e){ z=0 ; }else{ z=1; } n=0; printf("\nI LI\tLS\tf(LI)\tf(LS)\tPM\tf(PM)\tf(LI)*f(PM)\t\"|LS-LI|<Error\"\n"); printf("0 %.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%f\tFalso\n",li,ls,fa,fb,pm,fx,fa*fx); while(z) { n=n+1; if ((fa*fx)>0){ li=pm; } if ((fa*fx)<0){ ls=pm; } pm=(li+ls)/2; switch(opcion) { case 1: fa=seno(li); fb=seno(ls); fx=seno(pm); break; case 2: fa=senoCuadrado(li); fb=senoCuadrado(ls); fx=senoCuadrado(pm); break; case 3: fa=exponente(li); fb=exponente(ls); fx=exponente(pm); break; case 4: fa=senoCoseno(li); fb=senoCoseno(ls); fx=senoCoseno(pm); break; case 5: fa=evaluaPolinomio(li, ptPolinomio, grado); fb=evaluaPolinomio(ls, ptPolinomio, grado); fx=evaluaPolinomio(pm, ptPolinomio, grado); break; } a=(ls-li); if(a<0){ d=(-1*a); } else d=a; if (d<e) { z=0 ; } else z=1; if (z==0){ printf("%d %.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%f\tDetener\n",n, li,ls,fa,fb,pm,fx,fa*fx); } else printf("%d %.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%f\tFalso\n",n,li,ls,fa,fb, pm,fx,fa*fx); } printf("\nLa raiz es : %.9f \n\n",pm); free(ptPolinomio); }
void falsaPosicion(int opcion) { int *ptPolinomio, grado; int n; float li,ls,e,d,z,ex=2.7182818284; float fa,fb,fp,fx; if(opcion==DEFINE_POLINOMIO){ printf("Define el grado del polinomio:\n"); scanf("%d", &grado); ptPolinomio = definePolinomio(grado); leePolinomio(ptPolinomio, grado); } printf("Ingresa el Limite inferior : \n"); scanf("%f",&li); printf("Ingresa el Limite Superior : \n"); scanf("%f",&ls); printf("Ingresa el Error de tolerancia : \n"); scanf("%f",&e); switch(opcion) { case 1: fa=seno(li); fb=seno(ls); fp=((ls*fa-li*fb)/(fa-fb)); fx=seno(fp); break; case 2: fa=senoCuadrado(li); fb=senoCuadrado(ls); fp=((ls*fa-li*fb)/(fa-fb)); fx=senoCuadrado(fp); break; case 3: fa=(pow(ex,li)*(pow(li,2)-16)); fb=(pow(ex,ls)*(pow(ls,2)-16)); fp=((ls*fa-li*fb)/(fa-fb)); fx=(pow(ex,fp)*(pow(fp,2)-16)); break; case 4: fa=senoCoseno(li); fb=senoCoseno(ls); fp=((ls*fa-li*fb)/(fa-fb)); fx=senoCoseno(fp); break; case 5: fa=evaluaPolinomio(li, ptPolinomio, grado); fb=evaluaPolinomio(ls, ptPolinomio, grado); fp=((ls*fa-li*fb)/(fa-fb)); fx=evaluaPolinomio(fp, ptPolinomio, grado); break; } if(fx<0){ d=(-1*fx); }else{ d=fx; } if (d<e) { z=0 ; } else z=1; n=0; printf("\nI LI\tLS\tf(LI)\tf(LS)\tFP\tf(FP)\tf(LI)*f(FP)\t\"|f(FP)|<Error\"\n"); printf("0 %.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%f \tFalso\n",li,ls,fa,fb,fp,fx,fa*fx); while(z) { n=n+1; if ((fa*fx)>0){ li=fp; } if ((fa*fx)<0){ ls=fp; } switch(opcion) { case 1: fa=seno(li); fb=seno(ls); fp=((ls*fa-li*fb)/(fa-fb)); fx=seno(fp); break; case 2: fa=senoCuadrado(li); fb=senoCuadrado(ls); fp=((ls*fa-li*fb)/(fa-fb)); fx=senoCuadrado(fp); break; case 3: fa=(pow(ex,li)*(pow(li,2)-16)); fb=(pow(ex,ls)*(pow(ls,2)-16)); fp=((ls*fa-li*fb)/(fa-fb)); fx=(pow(ex,fp)*(pow(fp,2)-16)); break; case 4: fa=senoCoseno(li); fb=senoCoseno(ls); fp=((ls*fa-li*fb)/(fa-fb)); fx=senoCoseno(fp); break; case 5: fa=evaluaPolinomio(li, ptPolinomio, grado); fb=evaluaPolinomio(ls, ptPolinomio, grado); fp=((ls*fa-li*fb)/(fa-fb)); fx=evaluaPolinomio(fp, ptPolinomio, grado); break; } if(fx<0){ d=(-1*fx); } else d=fx; if (d<e) { z=0 ; } else z=1; if (z==0){ printf("%d %.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%f \tDetener\n",n,li,ls,fa,fb,fp,fx,fa*fx); } else printf("%d %.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%f \tFalso\n",n,li,ls,fa,fb,fp,fx,fa*fx); } printf("\nLa raiz es : %.9f \n\n",fp); free(ptPolinomio); }
double tangente(double x, int precisao) { return seno(x, precisao) / cosseno(x, precisao); }
int main(int argc, char* argv[]){ bind_textdomain_codeset ("calc", "UTF-8"); setlocale(LC_ALL, ""); bindtextdomain("calc","idioma"); textdomain("calc"); // declaracion de variables locales //variable para leer la categoria de funciones int categoria; //Cambio del manejo de señales, mensaje de error en caso de que no sea posible if (signal (SIGINT, myCatch) == SIG_ERR){ perror ("SIGINT can not change"); } if (signal (SIGSEGV , myCatch) == SIG_ERR){ perror ("SIGTERM can not change"); } //Mensaje de bienvenida printf(_("\n\nWelcome, you are running a calculator developed by the team Icazas!\n\n")); //Ciclo principal do{ //Desplegamos en pantalla el menu de categorias mostrarMenu (); //Leemos un digito en base 10 de maximo 2 caracteres categoria = readInt(10,2); //Si el valor leido es un numero evaluamos el menu //De lo contrario mostramos mensaje de error if (categoria != myNaN ()) { //Con la categoria y la operacion elegidas evaluamos la funcion adecuada switch (categoria) { case 1: { suma(); break; } case 2: { resta(); break; } case 3: { multiplicacion(); break; } case 4: { division(); break;} case 5: { seno(); break; } case 6: { coseno(); break; } case 7: { tangente(); break; } case 8: { arcoseno(); break; } case 9: { arcoCoseno(); break; } case 10:{ coseno(); break; } case 11:{ senoHiper(); break; } case 12:{ coship(); break; } case 13:{ tangenteHiper(); break; } case 14:{ atanDos(); break; } case 15:{ expon(); break; } case 16:{ logaritmoNatural(); break; } case 17:{ decLog(); break; } case 18:{ raizCuadrada(); break; } case 19:{ potencia(); break; } case 20:{ valorAbsoluto(); break; } case 21:{ fmodd(); break;} case 22:{ funcionTecho(); break;} case 23:{ funcionPiso(); break; } case 24:{ frexpre(); break; } case 25:{ ldexpe(); break;} case 26:{ moduloF(); break;} case 27:{ printf(_("\n\nThank you for using our calculator!\n")); printf(_("Come back soon!\n\n")); break; } default:{ printf(_("\n\nYou entered an invalid option!\n")); printf(_("Try again!\n\n")); break; } } } else{ printf(_("\n\nError: It is not a number!\n")); printf(_("Try again!\n\n")); } }while (categoria != 27); return 0; }
void menu_graf(char *file) { FILE * pbm; int flag_opt=0; /* flag_opt = 0 si no entro a ninguna funcion a graficar */ typedef enum {SEN=1,COS,POL0,POL1,POL2,POL3,LN,EXP,DEFAULT,ERROR=255} opt_graf_t; opt_graf_t optgraf; char option[MAX_CHAR]; int matriz[RESOLUCION][RESOLUCION]; float vect_x[RESOLUCION]; float vect_y[RESOLUCION]; cargo_x(vect_x); printf(MENU_GRAF); limpiarbuffer(); fgets(option, MAX_CHAR, stdin); option[strlen(option)-1]='\0'; optgraf=atoi(option); /* si se ingreso algo que no es una opcion debe ir al default */ if (optgraf==0) optgraf=DEFAULT; while (optgraf) { switch(optgraf) { case SEN: seno(vect_x, vect_y); flag_opt=1; break; case COS: coseno(vect_x, vect_y); flag_opt=1; break; case POL0: pol0(vect_x, vect_y); flag_opt=1; break; case POL1: pol1(vect_x, vect_y); flag_opt=1; break; case POL2: pol2(vect_x, vect_y); flag_opt=1; break; case POL3: pol3(vect_x, vect_y); flag_opt=1; break; case LN: ln(vect_x, vect_y); flag_opt=1; break; case EXP: expo(vect_x, vect_y); flag_opt=1; break; default: printf("Entrada inválida!\n"); } /* Este if corta la ejecuccion del programa si ya grafico sale del bucle while(optgraf) */ if(flag_opt==1) break; printf("Presione enter para volver al menu \n"); limpiarbuffer(); system(CLS); printf(MENU_GRAF); fgets(option, MAX_CHAR, stdin); option[strlen(option)-1]='\0'; optgraf=atoi(option); /* Si se ingreso una letra o algo que no es valido*/ if (!optgraf) optgraf=255; } inicializo_matriz(matriz); inicializo_ejes(matriz); cargo_matriz(matriz, vect_y); if(file==NULL) imprimo_matriz(matriz); else { /* Abrimos el pbm para guardar datos como file */ make_pbm_file(&pbm,file); /* grabamos la info y luego cerramos el file* */ write_pbm_file(&pbm, matriz, RESOLUCION, RESOLUCION); close_pbm_file(&pbm); } }
double coseno(double x){ double cos=radiceq(1-potint(seno(x),2)); return cos; }