Cómo encontrar el producto cruzado de dos vectores en C ++ usando una función

He escrito el mismo programa en lenguaje C. Puede consultarlo a continuación y funciona.

#include

#include

#include

vacío principal ()

{

int choice, i1, k1, j1, i2, j2, k2, i, j, k, f;

clrscr ();

hacer

{

printf (“\ nIntroduzca la elección. \ n1-Para encontrar AXB de vectores. \ n2-Para encontrar AB de vectores. \ n0-Para Salir \ n”);

scanf (“% d”, & elección);

interruptor (elección)

{

caso 1: printf (“Has elegido encontrar AXB de vectores. Ingresa el valor de ijk respectivamente del vector A. \ n”);

scanf (“% d% d% d”, & i1, & j1, & k1);

printf (“\ nIntroduzca el valor de i, j, k respectivamente del vector B. \ n”);

scanf (“% d% d% d”, & i2, & j2, & k2);

i = + ((k2) * (j1) + (j2) * (k1));

j = – ((k2) * (i1) + (i2) * (k1));

k = + ((j2) * (i1) + (i2) * (j1));

printf (“El valor de AXB del vector es% di ^,% dj ^,% dk ^.”, i, j, k);

rotura;

caso 2: printf (“\ nHas elegido encontrar AB de vectores. Así que ingresa el valor de i, j, k del vector A”);

scanf (“% d% d% d”, & i1, & j1, & k1);

printf (“\ nIntroduzca el valor de i, j, k respectivamente del vector B”);

scanf (“% d% d% d”, & i2, & j2, & k2);

i = ((i1) * (i2));

j = ((j1) * (j2));

k = ((k1) * (k2));

f = ((i) + (j) + (k));

printf (“\ nEl valor de AB de los vectores es% d.”, f);

rotura;

valor predeterminado: printf (“\ nHa introducido una opción incorrecta. \ nIntroduzca una opción válida”);

rotura;

}

Solía ​​clase para hacer estos vectores

Aquí v1 y v2 eran dos vectores proporcionados por el usuario y cross_p es el vector resultante

void crossproduct(vector v1,vector v2,vector cross_p)

{

cross_p.i = (v1.j*v2.k) - (v1.k*v2.j);

cross_p.j = -((v1.i*v2.k) - (v1.k*v2.i));

cross_p.k = (v1.i*v2.j) - (v1.j*v2.i);

cout<<"crossproduct = "<

}

Así es como puede usar una matriz 2D para encontrar el producto cruzado y el producto de puntos de 2 vectores ingresados ​​por el usuario en C ++.

#include
usando el espacio de nombres estándar;
int main ()
{
int vec [3] [3], icross, jcross, kcross, punto;
cout << "Ingrese (i) componente del Vector-1." << endl;
cin >> vec [1] [0];
cout << "Ingrese (j) componente del Vector-1." << endl;
cin >> vec [1] [1];
cout << "Componente Enter (k) de Vector-1." << endl;
cin >> vec [1] [2];
cout << endl;
cout << endl;
cout << "Ingrese (i) componente del Vector-2." << endl;
cin >> vec [2] [0];
cout << "Ingrese (j) componente del Vector-2." << endl;
cin >> vec [2] [1];
cout << "Componente Enter (k) de Vector-2." << endl;
cin >> vec [2] [2];
icross = (vec [1] [1] * vec [2] [2]) – (vec [2] [1] * vec [1] [2]);
jcross = -1 * ((vec [1] [0] * vec [2] [2]) – (vec [2] [0] * vec [1] [2]));
kcross = (vec [1] [0] * vec [2] [1]) – (vec [2] [0] * vec [1] [1]);
punto = (vec [1] [0] * vec [2] [0]) + (vec [1] [1] * vec [2] [1]) + (vec [1] [2] * vec [2 ] [2]);
cout << endl;
cout << endl;
cout << endl;
cout << "El producto cruzado de los 2 vectores es:" << icross << "i" << "+" << jcross << "k" << "+" << kcross << "k" << endl
cout << endl;
cout << "El Producto Dot de los 2 vectores es:" << dot << endl;
devuelve 0;
}

Espero que ayude 😀

No, no puede devolver una matriz. Sin embargo, puede hacer una función que haga referencia a 3 matrices. La función haría tres asignaciones.

Una función que acepta una sola matriz de 5 ints se vería así:

vacío cool (int (& runnings) [5])

Supongamos que los argumentos son matrices llamadas ayb, y la salida (también el último parámetro de la función) se llama c. Las tres ecuaciones se verían similares a:

c [0] = a [1] xb [2] – a [2] xb [1]

No recuerdo el orden exacto, pero cada componente resultante es la diferencia entre los productos de cada uno de los otros dos componentes. Suena elegante, pero estoy seguro de que entiendes lo que quiero decir.

Podría considerar hacer su propia clase de vectores que le permitirá devolver eso desde una función. También resultaría en un código más claro para entender.

Buena suerte.