// PROGRAMA QUE CALCULA EL DETERMINANTE DE NUMEROS COMPLEJOS, // EXPRESADOS EN FORMA RECTANGULAR. #include#include void main(void) { char sl; //variable para el case float r[9],im[9]; //datos para determinantes float r3[9],im3[9]; //datos para resolucion de ecuacion. float rind[3],imind[3];//terminos independientes. float r3t[3],im3t[3]; //resultados de determinante para las incognitas. int i; //contador para el for usado en la lectura. float re2,im2; //resultados para el determinante 2x2. float ret, imt; //resultados para el determinante 3x3. float recof1,recof2,recof3,imcof1,imcof2,imcof3; //resultados parciales. float a,b,c,d,rd,id; //variables para la division. clrscr(); printf("\n\t......OPERACIONES CON DETERMINANTES COMPLEJOS......\n\n"); printf("SELECCIONE LA OPERACION DESEADA:\n\n"); //agregado printf("a)Determinante 2x2.\nb)Determinante 3x3.\nc)Division de rectangulares.\nd)Resolucion de un sistema de 3x3\ns)SALIR"); //agregado while ((sl=getch())!='s') //agregado { switch (sl) { case 'a': printf("\na) Determinante 2x2."); printf ("\nDe elementos por pares, (linea1, linea2, etc):\n"); //Pide elementos para b for (i=0;i<4;++i) // Desde i=num de elem hasta 2x2, scanf("%f %f",&r[i],&im[i]); //captura valores. printf(" Reales= ("); //para imprimir reales=(..,..,..,) for (i=0;i<4;++i) { printf("%3.3f,", r[i]); //se imprimen los reales. } printf(")\n"); //aqu¡ termina la impresi¢n. printf(" Imaginarios= ("); //para imprimir imaginarios=(..,..,..,) for (i=0;i<4;++i) { printf("%3.3f,", im[i]); } printf(")\n"); //aqu¡ termina la impresi¢n. /*calculo del determinante 2x2*/ re2=r[0]*r[3]-im[0]*im[3]-r[1]*r[2]+im[1]*im[2]; im2=r[0]*im[3]+r[3]*im[0]-r[1]*im[2]-r[2]*im[1]; /*impresion del determinante general*/ printf("\n\t\t Parte Real Imaginaria\n"); printf("Determinante=\t\t%6.2f %6.2f j\n",re2,im2); break; case 'b': printf("\nb) Determinante 3x3."); printf ("\nD‚ los elementos por pares, (linea1, linea2, etc):\n"); //Pide elementos para b for (i=0;i<9;++i) // Desde i=num de elem hasta 3x3, scanf("%f %f",&r[i],&im[i]); //captura valores. printf(" Reales= ("); //para imprimir reales=(..,..,..,) for (i=0;i<9;++i) { printf("%3.3f,", r[i]); //se imprimen los reales. } printf(")\n"); //aqu¡ termina la impresi¢n. printf(" Imaginarios= ("); //para imprimir imaginarios=(..,..,..,) for (i=0;i<9;++i) { printf("%3.3f,", im[i]); } printf(")\n"); //aqu¡ termina la impresi¢n. /*calculo del cofactor para el elemento 11*/ recof1=0; recof1=r[4]*r[8]-im[4]*im[8]-r[5]*r[7]+im[5]*im[7]; imcof1=r[4]*im[8]+r[8]*im[4]-r[5]*im[7]-r[7]*im[5]; /*calculo del cofactor para el elemento 12*/ recof2=0; recof2=r[3]*r[8]-im[3]*im[8]-r[5]*r[6]+im[5]*im[6]; imcof2=r[3]*im[8]+r[8]*im[3]-r[5]*im[6]-r[6]*im[5]; /*calculo del cofactor para el elemento 13*/ recof3=0; recof3=r[3]*r[7]-im[3]*im[7]-r[4]*r[6]+im[4]*im[6]; imcof3=r[3]*im[7]+r[7]*im[3]-r[4]*im[6]-r[6]*im[4]; /*impresion de cofactores*/ printf("\n\t\t Parte Real Imaginaria\n"); printf("cofactor 11:\t\t%6.2f %6.3f j\n",recof1,imcof1); printf("cofactor 12:\t\t%6.2f %6.3f j\n",recof2,imcof2); printf("cofactor 13:\t\t%6.2f %6.3f j\n",recof3,imcof3); /*calculo del determinante general*/ ret=r[0]*recof1-im[0]*imcof1-r[1]*recof2+im[1]*imcof2+r[2]*recof3-im[2]*imcof3; imt=r[0]*imcof1+recof1*im[0]-r[1]*imcof2-recof2*im[1]+r[2]*imcof3+recof3*im[2]; /*impresion del determinante general*/ printf("\n\t\t Parte Real Imaginaria\n"); printf("Determinante=\t\t%6.2f %6.2f j\n",ret,imt); break; case 'c': printf("\nDivision\n"); printf("Escriba el numerador/dividendo:\n"); scanf("%f %f", &a,&b); printf("Escriba el denominador/divisor:\n"); scanf("%f %f", &c,&d); rd=(a*c+b*d)/(c*c+d*d); id=(b*c-a*d)/(c*c+d*d); printf("Division = %3.2f %3.2f j", rd, id); break; case 'd': printf("\nb) 3 ecuaciones con 3 incognitas."); printf ("\nD‚ los elementos por pares, (linea1, linea2, etc):\n"); //Pide elementos para b for (i=0;i<9;++i) // Desde i=num de elem hasta 3x3, scanf("%f %f",&r3[i],&im3[i]); //captura valores. printf(" Reales= ("); //para imprimir reales=(..,..,..,) for (i=0;i<9;++i) { printf("%3.3f,", r3[i]); //se imprimen los reales. } printf(")\n"); //aqu¡ termina la impresi¢n. printf(" Imaginarios= ("); //para imprimir imaginarios=(..,..,..,) for (i=0;i<9;++i) { printf("%3.3f,", im3[i]); } printf(")\n"); //aqu¡ termina la impresi¢n. printf ("\nD‚ los terminos independientes:\n"); //Pide elementos independientes for (i=0;i<3;++i) // Desde i=num de elem hasta 3, scanf("%f %f",&rind[i],&imind[i]); for (i=0;i<9;++i) { r[i]=r3[i]; //se asignan los valores al registro de trabajo. im[i]=im3[i]; } /*calculo del cofactor para el elemento 11*/ recof1=0; recof1=r[4]*r[8]-im[4]*im[8]-r[5]*r[7]+im[5]*im[7]; imcof1=r[4]*im[8]+r[8]*im[4]-r[5]*im[7]-r[7]*im[5]; /*calculo del cofactor para el elemento 12*/ recof2=0; recof2=r[3]*r[8]-im[3]*im[8]-r[5]*r[6]+im[5]*im[6]; imcof2=r[3]*im[8]+r[8]*im[3]-r[5]*im[6]-r[6]*im[5]; /*calculo del cofactor para el elemento 13*/ recof3=0; recof3=r[3]*r[7]-im[3]*im[7]-r[4]*r[6]+im[4]*im[6]; imcof3=r[3]*im[7]+r[7]*im[3]-r[4]*im[6]-r[6]*im[4]; /*impresion de cofactores*/ printf("\n\t\t Parte Real Imaginaria\n"); printf("cofactor 11:\t\t%6.2f %6.3f j\n",recof1,imcof1); printf("cofactor 12:\t\t%6.2f %6.3f j\n",recof2,imcof2); printf("cofactor 13:\t\t%6.2f %6.3f j\n",recof3,imcof3); /*calculo del determinante general*/ ret=r[0]*recof1-im[0]*imcof1-r[1]*recof2+im[1]*imcof2+r[2]*recof3-im[2]*imcof3; imt=r[0]*imcof1+recof1*im[0]-r[1]*imcof2-recof2*im[1]+r[2]*imcof3+recof3*im[2]; /*impresion del determinante general*/ printf("\n\t\t Parte Real Imaginaria\n"); printf("Determinante=\t\t%6.2f %6.2f j\n",ret,imt); /*ESTO SE REPITE PARA EL PRIMER CALCULO CON LOS TERMINOS INDEPENDIENTES.*/ for (i=0;i<9;++i) { r[i]=r3[i]; //se REasignan los valores al registro de trabajo. im[i]=im3[i]; } r[0]=rind[0]; //se sustituye la primera columna r[3]=rind[1]; r[6]=rind[2]; im[0]=imind[0]; im[3]=imind[1]; im[6]=imind[2]; /*calculo del cofactor para el elemento 11*/ recof1=0; recof1=r[4]*r[8]-im[4]*im[8]-r[5]*r[7]+im[5]*im[7]; imcof1=r[4]*im[8]+r[8]*im[4]-r[5]*im[7]-r[7]*im[5]; /*calculo del cofactor para el elemento 12*/ recof2=0; recof2=r[3]*r[8]-im[3]*im[8]-r[5]*r[6]+im[5]*im[6]; imcof2=r[3]*im[8]+r[8]*im[3]-r[5]*im[6]-r[6]*im[5]; /*calculo del cofactor para el elemento 13*/ recof3=0; recof3=r[3]*r[7]-im[3]*im[7]-r[4]*r[6]+im[4]*im[6]; imcof3=r[3]*im[7]+r[7]*im[3]-r[4]*im[6]-r[6]*im[4]; /*impresion de cofactores*/ printf("\n\t\t Parte Real Imaginaria\n"); printf("cofactor 11:\t\t%6.2f %6.3f j\n",recof1,imcof1); printf("cofactor 12:\t\t%6.2f %6.3f j\n",recof2,imcof2); printf("cofactor 13:\t\t%6.2f %6.3f j\n",recof3,imcof3); /*calculo del determinante UNO*/ r3t[0]=r[0]*recof1-im[0]*imcof1-r[1]*recof2+im[1]*imcof2+r[2]*recof3-im[2]*imcof3; im3t[0]=r[0]*imcof1+recof1*im[0]-r[1]*imcof2-recof2*im[1]+r[2]*imcof3+recof3*im[2]; /*impresion del determinante UNO*/ printf("\n\t\t Parte Real Imaginaria\n"); printf("Determinante 1=\t\t%6.2f %6.2f j\n",r3t[0],im3t[0]); /*TERMINA EL DETERMINANTE 11 Y EMPIEZA EL 12*/ for (i=0;i<9;++i) { r[i]=r3[i]; //se REasignan los valores al registro de trabajo. im[i]=im3[i]; } r[1]=rind[0]; //se sustituye la SEGUNDA columna r[4]=rind[1]; r[7]=rind[2]; im[1]=imind[0]; im[4]=imind[1]; im[7]=imind[2]; /*IGUAL DESDE AQUI...*/ /*calculo del cofactor para el elemento 11*/ recof1=0; recof1=r[4]*r[8]-im[4]*im[8]-r[5]*r[7]+im[5]*im[7]; imcof1=r[4]*im[8]+r[8]*im[4]-r[5]*im[7]-r[7]*im[5]; /*calculo del cofactor para el elemento 12*/ recof2=0; recof2=r[3]*r[8]-im[3]*im[8]-r[5]*r[6]+im[5]*im[6]; imcof2=r[3]*im[8]+r[8]*im[3]-r[5]*im[6]-r[6]*im[5]; /*calculo del cofactor para el elemento 13*/ recof3=0; recof3=r[3]*r[7]-im[3]*im[7]-r[4]*r[6]+im[4]*im[6]; imcof3=r[3]*im[7]+r[7]*im[3]-r[4]*im[6]-r[6]*im[4]; /*impresion de cofactores*/ printf("\n\t\t Parte Real Imaginaria\n"); printf("cofactor 11:\t\t%6.2f %6.3f j\n",recof1,imcof1); printf("cofactor 12:\t\t%6.2f %6.3f j\n",recof2,imcof2); printf("cofactor 13:\t\t%6.2f %6.3f j\n",recof3,imcof3); /*...HASTA ACA*/ /*calculo del determinante DOS*/ r3t[1]=r[0]*recof1-im[0]*imcof1-r[1]*recof2+im[1]*imcof2+r[2]*recof3-im[2]*imcof3; im3t[1]=r[0]*imcof1+recof1*im[0]-r[1]*imcof2-recof2*im[1]+r[2]*imcof3+recof3*im[2]; /*impresion del determinante DOS*/ printf("\n\t\t Parte Real Imaginaria\n"); printf("Determinante 2=\t\t%6.2f %6.2f j\n",r3t[1],im3t[1]); /*CALCULO DEL DETERMINANTE 3*/ for (i=0;i<9;++i) { r[i]=r3[i]; //se REasignan los valores al registro de trabajo. im[i]=im3[i]; } r[2]=rind[0]; //se sustituye la TERCERA columna r[5]=rind[1]; r[8]=rind[2]; im[2]=imind[0]; im[5]=imind[1]; im[8]=imind[2]; /*IGUAL DESDE AQUI...*/ /*calculo del cofactor para el elemento 11*/ recof1=0; recof1=r[4]*r[8]-im[4]*im[8]-r[5]*r[7]+im[5]*im[7]; imcof1=r[4]*im[8]+r[8]*im[4]-r[5]*im[7]-r[7]*im[5]; /*calculo del cofactor para el elemento 12*/ recof2=0; recof2=r[3]*r[8]-im[3]*im[8]-r[5]*r[6]+im[5]*im[6]; imcof2=r[3]*im[8]+r[8]*im[3]-r[5]*im[6]-r[6]*im[5]; /*calculo del cofactor para el elemento 13*/ recof3=0; recof3=r[3]*r[7]-im[3]*im[7]-r[4]*r[6]+im[4]*im[6]; imcof3=r[3]*im[7]+r[7]*im[3]-r[4]*im[6]-r[6]*im[4]; /*impresion de cofactores*/ printf("\n\t\t Parte Real Imaginaria\n"); printf("cofactor 11:\t\t%6.2f %6.3f j\n",recof1,imcof1); printf("cofactor 12:\t\t%6.2f %6.3f j\n",recof2,imcof2); printf("cofactor 13:\t\t%6.2f %6.3f j\n",recof3,imcof3); /*...HASTA ACA*/ /*calculo del determinante TRES*/ r3t[2]=r[0]*recof1-im[0]*imcof1-r[1]*recof2+im[1]*imcof2+r[2]*recof3-im[2]*imcof3; im3t[2]=r[0]*imcof1+recof1*im[0]-r[1]*imcof2-recof2*im[1]+r[2]*imcof3+recof3*im[2]; /*impresion del determinante TRES*/ printf("\n\t\t Parte Real Imaginaria\n"); printf("Determinante 3=\t\t%6.2f %6.2f j\n",r3t[2],im3t[2]); getch(); printf("\t\t\t..........RESULTADOS...............\n"); printf("\n\t\t Parte Real Imaginaria\n"); /*calculo de incognitas*/ c=ret; d=imt; for(i=0;i<3;i++) { a=r3t[i]; b=im3t[i]; rd=(a*c+b*d)/(c*c+d*d); id=(b*c-a*d)/(c*c+d*d); printf("\nVariable %d = \t\t%3.2f \t %3.2f j\n", i+1, rd, id); } break; default: printf("\n\tOPCION INVALIDA!\n\n"); printf("DEBE SELECCIONAR UNA OPCION:\n\n"); //agregado printf("a)Determinante 2x2.\nb)Determinante 3x3.\nc)Division de rectangulares.\ns)SALIR"); //agregado break; } } }