Open in App
Not now

Program for dot product and cross product of two vectors

• Difficulty Level : Easy
• Last Updated : 04 Jun, 2022

There are two vector A and B and we have to find the dot product and cross product of two vector array. Dot product is also known as scalar product and cross product also known as vector product.
Dot Product – Let we have given two vector A = a1 * i + a2 * j + a3 * k and B = b1 * i + b2 * j + b3 * k. Where i, j and k are the unit vector along the x, y and z directions. Then dot product is calculated as dot product = a1 * b1 + a2 * b2 + a3 * b3
Example –

```A = 3 * i + 5 * j + 4 * k
B = 2 * i + 7 * j + 5 * k
dot product = 3 * 2 + 5 * 7 + 4 * 5
= 6 + 35 + 20
= 61```

Cross Product – Let we have given two vector A = a1 * i + a2 * j + a3 * k and B = b1 * i + b2 * j + b3 * k. Then cross product is calculated as cross product = (a2 * b3 – a3 * b2) * i + (a3 * b1 – a1 * b3) * j + (a1 * b2 – a2 * b1) * k, where [(a2 * b3 – a3 * b2), (a3 * b1 – a1 * b3), (a1 * b2 – a2 * b1)] are the coefficient of unit vector along i, j and k directions.
Example –

```A = 3 * i + 5 * j + 4 * k
B = 2 * i + 7 * j + 5 * k
cross product
= (5 * 5 - 4 * 7) * i
+ (4 * 2 - 3 * 5) * j + (3 * 7 - 5 * 2) * k
= (-3)*i + (-7)*j + (11)*k```

Example –

```Input: vect_A[] = {3, -5, 4}
vect_B[] = {2, 6, 5}
Output: Dot product: -4
Cross product = -49 -7 28```

Code-

C++

 `// C++ implementation for dot product` `// and cross product of two vector.` `#include ` `#define n 3`   `using` `namespace` `std;`   `// Function that return` `// dot product of two vector array.` `int` `dotProduct(``int` `vect_A[], ``int` `vect_B[])` `{`   `    ``int` `product = 0;`   `    ``// Loop for calculate dot product` `    ``for` `(``int` `i = 0; i < n; i++)`   `        ``product = product + vect_A[i] * vect_B[i];` `    ``return` `product;` `}`   `// Function to find` `// cross product of two vector array.` `void` `crossProduct(``int` `vect_A[], ``int` `vect_B[], ``int` `cross_P[])`   `{`   `    ``cross_P[0] = vect_A[1] * vect_B[2] - vect_A[2] * vect_B[1];` `    ``cross_P[1] = vect_A[2] * vect_B[0] - vect_A[0] * vect_B[2];` `    ``cross_P[2] = vect_A[0] * vect_B[1] - vect_A[1] * vect_B[0];` `}`   `// Driver function` `int` `main()` `{`   `    ``int` `vect_A[] = { 3, -5, 4 };` `    ``int` `vect_B[] = { 2, 6, 5 };` `    ``int` `cross_P[n];`   `    ``// dotProduct function call` `    ``cout << ``"Dot product:"``;` `    ``cout << dotProduct(vect_A, vect_B) << endl;`   `    ``// crossProduct function call` `    ``cout << ``"Cross product:"``;` `    ``crossProduct(vect_A, vect_B, cross_P);`   `    ``// Loop that print` `    ``// cross product of two vector array.` `    ``for` `(``int` `i = 0; i < n; i++)`   `        ``cout << cross_P[i] << ``" "``;` `    ``return` `0;` `}`

Java

 `// java implementation for dot product` `// and cross product of two vector.` `import` `java.io.*;`   `class` `GFG {`   `    ``static` `int` `n = ``3``;`   `    ``// Function that return` `    ``// dot product of two vector array.` `    ``static` `int` `dotProduct(``int` `vect_A[], ``int` `vect_B[])` `    ``{`   `        ``int` `product = ``0``;`   `        ``// Loop for calculate dot product` `        ``for` `(``int` `i = ``0``; i < n; i++)` `            ``product = product + vect_A[i] * vect_B[i];` `        ``return` `product;` `    ``}`   `    ``// Function to find` `    ``// cross product of two vector array.` `    ``static` `void` `crossProduct(``int` `vect_A[], ``int` `vect_B[],` `                             ``int` `cross_P[])`   `    ``{`   `        ``cross_P[``0``] = vect_A[``1``] * vect_B[``2``]` `                     ``- vect_A[``2``] * vect_B[``1``];` `        ``cross_P[``1``] = vect_A[``2``] * vect_B[``0``]` `                     ``- vect_A[``0``] * vect_B[``2``];` `        ``cross_P[``2``] = vect_A[``0``] * vect_B[``1``]` `                     ``- vect_A[``1``] * vect_B[``0``];` `    ``}`   `    ``// Driver code` `    ``public` `static` `void` `main(String[] args)` `    ``{` `        ``int` `vect_A[] = { ``3``, -``5``, ``4` `};` `        ``int` `vect_B[] = { ``2``, ``6``, ``5` `};` `        ``int` `cross_P[] = ``new` `int``[n];`   `        ``// dotProduct function call` `        ``System.out.print(``"Dot product:"``);` `        ``System.out.println(dotProduct(vect_A, vect_B));`   `        ``// crossProduct function call` `        ``System.out.print(``"Cross product:"``);` `        ``crossProduct(vect_A, vect_B, cross_P);`   `        ``// Loop that print` `        ``// cross product of two vector array.` `        ``for` `(``int` `i = ``0``; i < n; i++)`   `            ``System.out.print(cross_P[i] + ``" "``);` `    ``}` `}`   `// This code is contributed by vt_m`

Python3

 `# Python3 implementation for dot product` `# and cross product of two vector.`   `n ``=` `3`   `# Function that return` `# dot product of two vector array.` `def` `dotProduct(vect_A, vect_B):`   `    ``product ``=` `0`   `    ``# Loop for calculate dot product` `    ``for` `i ``in` `range``(``0``, n):` `        ``product ``=` `product ``+` `vect_A[i] ``*` `vect_B[i]`   `    ``return` `product`   `# Function to find` `# cross product of two vector array.` `def` `crossProduct(vect_A, vect_B, cross_P):`   `    ``cross_P.append(vect_A[``1``] ``*` `vect_B[``2``] ``-` `vect_A[``2``] ``*` `vect_B[``1``])` `    ``cross_P.append(vect_A[``2``] ``*` `vect_B[``0``] ``-` `vect_A[``0``] ``*` `vect_B[``2``])` `    ``cross_P.append(vect_A[``0``] ``*` `vect_B[``1``] ``-` `vect_A[``1``] ``*` `vect_B[``0``])`     `# Driver function` `if` `__name__``=``=``'__main__'``:` `    ``vect_A ``=` `[``3``, ``-``5``, ``4``]` `    ``vect_B ``=` `[``2``, ``6``, ``5``]` `    ``cross_P ``=` `[]`   `# dotProduct function call` `    ``print``(``"Dot product:"``, end ``=``" "``)` `    ``print``(dotProduct(vect_A, vect_B))`   `# crossProduct function call` `    ``print``(``"Cross product:"``, end ``=``" "``)` `    ``crossProduct(vect_A, vect_B, cross_P)`   `# Loop that print` `# cross product of two vector array.` `    ``for` `i ``in` `range``(``0``, n):` `        ``print``(cross_P[i], end ``=``" "``)`   `# This code is contributed by` `# Sanjit_Prasad`

C#

 `// C# implementation for dot product` `// and cross product of two vector.` `using` `System;`   `class` `GFG {`   `    ``static` `int` `n = 3;`   `    ``// Function that return dot` `    ``// product of two vector array.` `    ``static` `int` `dotProduct(``int``[] vect_A,` `                          ``int``[] vect_B)` `    ``{`   `        ``int` `product = 0;`   `        ``// Loop for calculate dot product` `        ``for` `(``int` `i = 0; i < n; i++)` `            ``product = product + vect_A[i] * vect_B[i];` `        ``return` `product;` `    ``}`   `    ``// Function to find cross product` `    ``// of two vector array.` `    ``static` `void` `crossProduct(``int``[] vect_A,` `                             ``int``[] vect_B, ``int``[] cross_P)`   `    ``{`   `        ``cross_P[0] = vect_A[1] * vect_B[2]` `                     ``- vect_A[2] * vect_B[1];` `        ``cross_P[1] = vect_A[2] * vect_B[0]` `                     ``- vect_A[0] * vect_B[2];` `        ``cross_P[2] = vect_A[0] * vect_B[1]` `                     ``- vect_A[1] * vect_B[0];` `    ``}`   `    ``// Driver code` `    ``public` `static` `void` `Main()` `    ``{` `        ``int``[] vect_A = { 3, -5, 4 };` `        ``int``[] vect_B = { 2, 6, 5 };` `        ``int``[] cross_P = ``new` `int``[n];`   `        ``// dotProduct function call` `        ``Console.Write(``"Dot product:"``);`   `        ``Console.WriteLine(` `            ``dotProduct(vect_A, vect_B));`   `        ``// crossProduct function call` `        ``Console.Write(``"Cross product:"``);` `        ``crossProduct(vect_A, vect_B, cross_P);`   `        ``// Loop that print` `        ``// cross product of two vector array.` `        ``for` `(``int` `i = 0; i < n; i++)` `            ``Console.Write(cross_P[i] + ``" "``);` `    ``}` `}`   `// This code is contributed by vt_m.`

PHP

 ``

Javascript

 ``

Output:

```Dot product:-4
Cross product:-49 -7 28```

Time Complexity: O(3), the code will run in a constant time because the size of the arrays will be always 3.
Auxiliary Space: O(3), no extra space is required, so it is a constant.

This article is contributed by Dharmendra Kumar. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.