Ver Mensaje Individual
  #4 (permalink)  
Antiguo 18/04/2008, 10:54
jaime_pg
 
Fecha de Ingreso: abril-2008
Mensajes: 5
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Help calculo de numeros complejos

Segunda parte:

} // Se define la función suma.
void restar()
{
float q,w,e,r,a,s,d,f;
vec *T;
int i;
if (!n)
return;
T = P;
printf("Ingrese el primer cuaternion a restar\n");
scanf("%i",&i);
while (T != NULL)
{
if (T->pos == i)
break;
T = T->sgte;
}
if (T == NULL)
{
printf("No se encontro ese cuaternion\n");
system ("pause");
return;
}
q=T->valor1;
w=T->valor2;
e=T->valor3;
r=T->valor4;
printf("Ingrese el segundo cuaternion a restar\n");
scanf("%i",&i);
T=P;
while (T != NULL)
{
if (T->pos == i)
break;
T = T->sgte;
}
if (T == NULL)
{
printf("No se encontro ese cuaternion\n");
system ("pause");
return;
}
a=T->valor1;
s=T->valor2;
d=T->valor3;
f=T->valor4;
a=-a+q;
s=-s+w;
d=-d+e;
f=-f+r;
printf("el resultado es: %.5f + %.5fi + %.5fj + %.5fk\n",a,s,d,f);
guardar(a,s,d,f);
system ("pause");
return;
} // Se define la función resta.
void conjugado ()
{
vec *T;
int i;
float a,s,d,f;
if (!n)
return;
T = P;
printf("ingrese el numero del cuaternion que desea conjugar");
scanf("%i",&i);
T=P;
while (T != NULL)
{
if (T->pos == i)
break;
T = T->sgte;
}
if (T == NULL)
{
printf("No se encontro ese cuaternion\n");
system ("pause");
return;
}
a=T->valor1;
s=-(T->valor2);
d=-(T->valor3);
f=-(T->valor4);
printf("el conjugado es: %.5f + %.5fi + %.5fj + %.5fk\n",a,s,d,f);
guardar(a,s,d,f);
system ("pause");
return;
} // Se define el conjugado de un cuaternión.
int compara(int v, int b)
{
vec *T;
float a,s,d,f,q,w,e,r;
if (!n)
return;
T = P;
while (T != NULL)
{
if (T->pos == v)
break;
T = T->sgte;
}
if (T == NULL)
{
printf("No se encontro ese cuaternion\n");
system ("pause");
return;
}
q=T->valor1;
w=T->valor2;
e=T->valor3;
r=T->valor4;
T=P;
while (T != NULL)
{
if (T->pos == b)
break;
T = T->sgte;
}
if (T == NULL)
{
printf("No se encontro ese cuaternion\n");
system ("pause");
return;
}
a=T->valor1;
s=T->valor2;
d=T->valor3;
f=T->valor4;

if((fabs(a-q)<0.00001) && (fabs(s-w)<0.00001) && (fabs(d-e)<0.00001) && (fabs(f-r)<0.00001))
return 1;
else
return 0;
} // Se lleva a cabo la comparación de dos cuaterniones.
void multiplicar()
{
float q,w,e,r,a,s,d,f,z,x,c,v;
vec *T;
int i;
if (!n)
return;
T = P;
printf("Ingrese el primer cuaternion a multiplicar\n");
scanf("%i",&i);
while (T != NULL)
{
if (T->pos == i)
break;
T = T->sgte;
}
if (T == NULL)
{
printf("No se encontro ese cuaternion\n");
system ("pause");
return;
}
q=T->valor1;
w=T->valor2;
e=T->valor3;
r=T->valor4;
printf("Ingrese el segundo cuaternion a multipicar\n");
scanf("%i",&i);
T=P;
while (T != NULL)
{
if (T->pos == i)
break;
T = T->sgte;
}
if (T == NULL)
{
printf("No se encontro ese cuaternion\n");
system ("pause");
return;
}
a=T->valor1;
s=T->valor2;
d=T->valor3;
f=T->valor4;
z=a*q-s*w-d*e-f*r;
x=q*s+a*w+e*f-d*r;
c=q*d+a*e+s*r-w*f;
v=q*f+a*r+w*d-s*e;

printf("el resultado es: %.5f + %.5fi + %.5fj + %.5fk\n",z,x,c,v);
system ("pause");
guardar(z,x,c,v);
return;
} // Se calcula el producto de dos cuaterniones.
int main (void)
{
vec *O;
int temp,a,b,c;
float z;
temp = 0;
n = 0;
while (temp!=11)
{
printf(" Cuaterniones de Hamilton\n\n");
printf("Que desea hacer:\n\n");
printf("1)Ingresar Valor\n");
printf("2)Multiplicar\n");
printf("3)Dividir\n");
printf("4)Norma\n");
printf("5)Inversa\n");
printf("6)Sumar\n");
printf("7)Restar\n");
printf("8)Conjugar\n");
printf("9)Comparar\n");
printf("10)Eliminar Valor\n");
printf("11)Salir\n");
showele();
printf("\n");
scanf("%i",&temp);
switch (temp)
{ // Se desplega en pantalla el menú principal
case 1:
ingresar();
break;
case 2:
multiplicar();
break;
case 3:
division();
break;
case 4:
printf("Ingrese el numero del cuaternion del cual desea conocer su norma:");
scanf("%i",&a);
z=norma(a);
printf("norma de q%i es %.5f\n",a,z);
system("pause");
break;
case 5:
printf("Ingrese el numero del cuaternion del cual desea conocer su inversa");
scanf("%i",&a);
inversa(a);
break;
case 6:
sumar();
break;
case 7:
restar();
break;
case 8:
conjugado();
break;
case 9:
O=P;
while (O != NULL)
{
if (O->pos == 1)
{
O = O->sgte;
break;
}
O = O->sgte;
}
if (O == NULL)
{
printf("No hay suficientes cuaterniones\n");
system ("pause");
break;
}
printf("ingrese el numero del primer cuaternion a comparar:");
scanf("%d",&b);
printf("ingrese el numero del segundo cuaternion a comparar:");
scanf("%d",&c);
a=compara(b,c);
if(a)
printf("los cuaterniones son iguales\n");
else
printf("los cuaterniones no son iguales\n");
system("pause");
break;
case 10:
eliminar();
break;
default:
break;
} // Se ramifican los distintos casos para las opciones a considerar.
system ("cls");
} // Se realiza una llamada al sistema que permite borrar lo que
// hay impreso en pantalla.
return 0;
}



Chao, espero que te sirva.