Prove that $a * b$ is a group (Hungerford, 2nd ed., sec $7.2$, Exercise $22$) 
Prove that the set of nonzero real numbers is a group under the operation $*$ defined by
  \begin{align}
a*b = \begin{cases} ab &\mbox{if } a > 0 \\
\frac{a}{b} &\mbox{if } a < 0
\end{cases}
\end{align}

I have trouble proving the associativity propery of a group here. Here is my work so far:
If $a > 0, b > 0$, then $(a*b)*c = (ab)*c = (ab)c$ and $a*(b*c) = a*(bc) = a(bc)$. 
If $a > 0, b < 0$, then $(a*b)*c = (a/b)*c = (a/b)/c = a/(bc)$ and $a*(b*c) = a*(b/c) = a/(b/c) = ac/b$.
If $a < 0, b > 0$, then $(a*b)*c = (a/b)*c = (a/b)c = ac/b$ and $a*(b*c) = a*(bc) = a/(bc)$.
If $a < 0, b < 0$, then $(a*b)*c = (a/b)*c = (a/b)/c = a/(bc)$ and $a*(b*c) =a*(b/c) = a/(b/c) = ac/b$.
I had been unable to prove that $(a*b)*c = a*(b*c)$ for all cases but the first one. I cannot understand why...
 A: I've highlighted in red the fixes you need. You have to be careful about evaluating $ab$ and $a/b$ to get the sign.
If $a > 0, b < 0$, then $(a*b)*c = \color{red}{(ab)*c = ab/c}$ and $a*(b*c) = a*(b/c) = \color{red}{a(b/c) = ab/c}$.
If $a < 0, b > 0$, then $(a*b)*c = (a/b)*c = \color{red}{(a/b)/c = a/(bc)}$ and $a*(b*c) = a*(bc) = a/(bc)$.
If $a < 0, b < 0$, then $(a*b)*c = (a/b)*c = \color{red}{(a/b)c = ac/b}$ and $a*(b*c) =a*(b/c) = a/(b/c) = ac/b$.

As an aside, the associative property is the least of your worries. This operation fails to be closed for the integers. Was the problem for the non-zero rationals?
A: A different answer addresses your question directly, but I am including this answer to offer a slightly different perspective.  The approach described below yields the fact that you have a group automatically (without checking various properties), but presumes that you're comfortable with the notions of group homomorphism/isomorphism/automorphism and semidirect products.

As a starting point, note that $\Bbb{R}_{\ne 0}$ (with usual multiplication) is isomorphic to the cartesian product $\Bbb{R}_{> 0} \times \{ \pm 1 \}$ by separating the magnitude of the real number from its sign.  Explicitly, the map is
$$
\begin{align}
\Bbb{R}_{\ne 0} &\to \Bbb{R}_{> 0} \times \{ \pm 1 \} \\
a &\mapsto \left( |a|, \frac{a}{|a|} \right)
\end{align}
$$
whose inverse is the map
$$
\left( b, \varepsilon\right) \mapsto b \varepsilon.
$$
Now, the multiplicative group of positive reals (the left-hand factor in the direct product) has the reciprocal map $\varphi \in \operatorname{Aut}(\Bbb{R}_{>0})$, given by $\varphi(b) = \frac{1}{b}$, which is an involution:  $\varphi^2 = 1$.  Therefore, there is a natural map
$$
\begin{align}
\left\{ \pm 1 \right\} &\xrightarrow{\Phi} \operatorname{Aut}(\Bbb{R}_{>0}) \\
+1 &\mapsto 1 \\
-1 &\mapsto \varphi
\end{align}
$$
Your group is now isomorphic to the semidirect product
$$
\Bbb{R}_{>0} \rtimes \{ \pm 1 \}
$$
since
$$
(b_1, \varepsilon_1) \cdot (b_2, \varepsilon_2) = (b_1 \Phi(\varepsilon_1)(b_2), \varepsilon_1 \varepsilon_2) =
\begin{cases}
(b_1 b_2, \varepsilon_1 \varepsilon_2) & \text{if } \varepsilon_1 = +1 \\
(b_1 \frac{1}{b_2}, \varepsilon_1 \varepsilon_2) & \text{if } \varepsilon_1 = -1.
\end{cases}
$$
