// 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\t­OPCION 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;
		}

	}

}













    Source: geocities.com/uniteciec