Cross product to find Lorentz force in C++ User enters velocity vector \$v\$, charge \$q\$ of particle and magnetic field vector \$B\$ and the code prints the Lorentz force \$F = q * (v * B)\$  


#include &lt;iostream&gt;

using namespace std;

int main()
{
    double v[3];
    double B[3];
    double q;
    int i;
    double F = (0.0, 0.0, 0.0);
    double i_X, j_X, k_X;
    cout &lt;&lt; "Enter in components of velocity vector v:\n";

    for(i=0; i&lt;3; i++)
    {
        cout &lt;&lt; "Component " &lt;&lt; i+1 &lt;&lt; ": ";
        cin &gt;&gt; v[i];
    }

    cout &lt;&lt; "Enter in charge of particle q: ";
    cin &gt;&gt; q;

    cout &lt;&lt; "Enter in components of magnetic field vector B:\n";

    for(i=0; i&lt;3; i++)
    {
        cout &lt;&lt; "Component " &lt;&lt; i+1 &lt;&lt; ": ";
        cin &gt;&gt; B[i];
    }

    i_X= (v[1]*B[2])-(v[2]*B[1]);
    j_X= (v[2]*B[0])-(v[0]*B[2]);
    k_X= (v[0]*B[1])-(v[1]*B[0]);

    cout &lt;&lt; endl;
    cout &lt;&lt; endl;

        cout &lt;&lt; "F =  "&lt;&lt; q* i_X &lt;&lt; "i" &lt;&lt; " + " &lt;&lt; q* j_X &lt;&lt; "j" &lt;&lt; " + " &lt;&lt; q* k_X &lt;&lt; "k" &lt;&lt; endl;


     return 0;
}


is this the correct way to do this or is there a more succinct way?
There are a few things here that could improve your code (whether the code becomes more succinct or not is a matter of debate, but it will definitely become more readable):


Do not use using namespace std, it is considered bad practice as it can lead to subtle name resolution errors and makes the code (in my opinion) more difficult to read because you now have globals, for example cout and cin in your program which are not easily recognizable.
You do not need to define all variables at the top of each function, and, in fact, should favor to declare your variables as locally as possible, because this helps people keep track of what is currently important while reading your code. Nobody wants to keep track of several different, obscure variables whose meaning and usage is only introduced several lines deeper down.
It is completely unclear to me why you wrote double F = (0.0, 0.0, 0.0); which is equivalent to double F = 0.0; but very obscure. 
Even more obscure, why do you even have a variable named F if you never use it? Remove it.
Rethink operator spacing. Ultimately, this issue comes don to personal preference, but please consider adding a space before and after each binary operator. Lines such as i_X= (v[1]*B[2])-(v[2]*B[1]); are much harder to parse quickly and correctly than i_X = (v[1] * B[2]) - (v[2] * B[1]);.
Do not use std::endl unless you have a good reason to, as it not only creates a line break but also flushes the stream, which can be detrimental to performance. Although it is unlikely to matter in your case, you might find yourself working with situations where it does matter, so you should make a habit out of preferring '\n'.
Concatenate adjacent string literals when writing to std::cout. You could get away with fewer calls to operator&lt;&lt; if you wrote cout &lt;&lt; "F =  " &lt;&lt; q * i_X &lt;&lt; "i + " &lt;&lt; q * j_X &lt;&lt; "j + " &lt;&lt; q * k_X &lt;&lt; "k\n"; instead of cout &lt;&lt; "F =  "&lt;&lt; q* i_X &lt;&lt; "i" &lt;&lt; " + " &lt;&lt; q* j_X &lt;&lt; "j" &lt;&lt; " + " &lt;&lt; q* k_X &lt;&lt; "k" &lt;&lt; endl;.
Omit return 0;. The compiler automatically inserts it for you (although only in main).
You do no input checking at all. If a user enters anything that can not be parsed as a double by cin you will be running into undefined behavior because of uninitialized variables. Depending on your use case, this might be fine, but if you ever intend to have somebody else use this program, you should add some checks to make sure you actually receive valid input.
You should consider letting the user input all three values of a vector on the same line, not only to make your code a little more succinct, but also to make it a little more user-friendly.