Showing that a if a real matrix $A$ satisfies $A^t=A^3$, then $A^2$ is diagonalizable over the reals I tried proving that if $A$ is a real square matrix with $A^t=A^3$, then $A^2$ is diagonalizable over $\mathbb R$. 
Since $A^t=A^3, A$ if considered as a complex matrix, commutes with its adjoint. So $A=U^*DU$ for a diagonal matrix $D$ containing the eigenvalues of $A$. Then $A^2=U^*D^2U$ and $D^2$ has entries $\lambda^2$ for each eigenvalue $\lambda$ of $A$. Now note that if $\lambda$ is an eigenvalue for $A$ with eigenvector $v$, $\bar\lambda$ is one of $A^*=A^t$ with the same eigenvector, but then $\bar\lambda$ must also be an eigenvalue of $A^3$ with same vector. So we have $A^3v=\bar\lambda v=\lambda^3 v$. So $\bar\lambda=\lambda^3$ and so $\lambda\bar\lambda=|\lambda|^2=\lambda^4$. Hence $\lambda^4$ is the square of a real number and thus $\lambda^2$ is real for all $\lambda$. So eigenvalues of $A^2$ are real and the matrix $D^2$ above is a real matrix. Consequently, $U$ is actually orthogonal when we write $A^2=U^*D^2U$ and so $A^2$ is indeed diagonalizable over $\mathbb R$.
My question is, is the above solution correct, or is there any flaws in it?

Your answer is mostly correct.  You should take care to fix the statement 

So $\bar\lambda=\lambda^3$ and so $\lambda^2=|\lambda|$ is real for all $\lambda$.

I would say $(\lambda^2)^2 = |\lambda|^2$, which means that $\lambda^2$ is real.  Also, you should clarify how you deduce

So eigenvalues of $A^2$ are real and the matrix $D^2$ above is a real matrix. Consequently, $U$ is actually orthogonal when we write $A^2=U^*D^2U$ and so $A^2$ is indeed diagonalizable over $\mathbb R$.

