Probability Exercise (Java and C++) So I have this probability exercise and I'd like to know if it is correct, along with my reasoning, so here is the exercise:

In a computer installation, 200 programs are written each week, 120 in
  C++ and 80 in Java. 60% of the programs written in C++ compile on the
  first run 80% of the Java programs compile on the first run. 
What is the probability that a program chosen at random:
1. is written in C++ or compiles on first run?
2. is written in Java or does not compile?
3. either compiles or does not compile?

So here is my solution to each question along with my reasoning:

1) P(C++ $\cup$ Success) = P(C++) + P(Success) - P(C++ $\cap$ Success) 
This is due to the fact that both of these events have elements in common which are 1st runs which are either Success or Fail. And since they are not mutually exclusive the formula is:
P(A $\cup$ B) = P(A) + P(B) - P(A $\cap$ B)
The solution then is:
C++ programs are $\frac{120}{200}$ = 0.6
Total successful runs are: ((120 $\times \frac{60}{100}$)+(80 $\times$ $\frac{80}{100}$)) $\div$ 200 = $\frac{136}{200}$ = 0.68
P(C++ $\cap$ Success) = (120 $\times$ $\frac{60}{100}$) $\div$ 200 = $\frac{72}{200}$ = 0.36
Hence:
P(C++ $\cup$ Success) = 0.6 + 0.68 - 0.36 = 0.92 = 92%

Next off:

2) P(Java $\cup$ Fail) = P(Java) + P(Fail) - P(Java $\cap$ Fail)
Same as before, these events are not mutual exclusive, hence the formula.
In this example since we have to calculate the probability of a Fail on 1st run, we use the Complement Event Theorem which states that P(E') = 1 - P(E), which in our example it is P(Fail) = 1 - P(Success), hence we can easily calculate that using previously calculated Success:
P(Fail) = 1 - P(Success) = 1 - 0.68 = 0.32
Java programs are $\frac{80}{200}$ = 0.4
P(Java $\cap$ Fail) = ((80 - (80 $\times$ $\frac{80}{100}$)) $\div$ 200) = 0.08 
Hence:
P(Java $\cup$ Fail) = 0.4 + 0.32 0.08 = 0.64 = 64%

And last:

3) P(Success $\cup$ Fail) = P(Success) + P(Fail) = P(Success) + (1 - P(Success))
Intuitively this will be equal to 1, but for the sake of argument let's write it down, cause on exams you need to prove it.
From previous calculations we know that P(Success) = 0.68, and P(Fail) = 0.32,
Hence:
P(Success $\cup$ Fail) = 0.68 + 0.32 = 1 = 100%

Is everything correct? If not then why? 
Thank you in advance! :)
 A: The entire set of questions can be answered more easily if we first build a $2 \times 2$ contingency table from the given information.  We would have $$\begin{array}{|c|c|c|c|}\hline & \mbox{C++} & {\rm Java} & \\ \hline {\rm Compiles} & 72 & 64 & 136 \\ \hline {\rm Fails} & 48 & 16 & 64 \\ \hline & 120 & 80 & 200 \\ \hline \end{array}$$  Here we have calculated, the individual cell frequencies by noting, for example, $60 \%$ of $120$ C++ programs compile means $(0.6)(120) = 72$ of them compile.
Now the relevant probabilities are simply sums of the corresponding cell frequencies divided by the total number of observations, $200$.  The answer to the first question, for instance, is $\frac{72 + 48 + 64}{200} = \frac{23}{25}$.  The second is $\frac{16}{25}$, and the third is $1$.
A: I didn't check your arithmetic thoroughly (checking the correctness of plugged-in values is your job), but the application of inclusion-exclusion looks correct, and all the results look intuitively plausible, so your work looks good.
Also, well done on the clarity and directness of your approach.
