# C: Assignments Day 1¶

Today we have three problems for you to tackle. Two are familiar and you performed them in Python as part of day 1 exercises and assignments. The third **pi** is new.

Warning

In the Python part of the bootcamp pretty much everything was set up for you with Jupyter notebooks that were supplied. In this part of the bootcamp we will only be providing you with ONE example file. You will in a hurry have to learn some **emacs** and basic **git** and **linux** commands. The sidebar on the left contains some basic instruction on these (enough to get you through this part of the bootcamp). The training wheels have been removed!

## Problem 1: Solve the Quadratic¶

We wish to solve the quadratic equations, i.e. given **a**, **b**, and **c**, solve the following equation for **x**.

The solution from your high school days is the legendary formula:

We want you to write an application developed in **C** to solve this equation.

To start you off, we have provided a file **solveQuadratic.c** in **/code/c/ExerciseDay1/** which will read 3 numbers from the command line and print out a message to the screen. You are to modify it to print out the solution for **x**. The contents of this file are shown below.

```
1// program to solve quadratic equation
2// ax^2 + bx + c = 0
3//
4// soln: x = -b/2a +/- sqrt(b^2-4ac)/2a
5//
6// write a program to take 3 inputs and output the soln
7// deal with possible errors in input, i.e. b^2-4ac negative
8
9#include <stdlib.h>
10#include <stdio.h>
11#include <math.h>
12
13int main(int argc, char **argv) {
14
15 if (argc != 4) {
16 printf("Usage: appName a b c\n");
17 exit(-1);
18 }
19
20 float a = atof(argv[1]);
21 float b = atof(argv[2]);
22 float c = atof(argv[3]);
23
24 printf("Have a Nice Day!\n");
25 return 0;
26}
27
```

Note

When compiling because you will be using functions from the **C** math library you will need to include the math library when you compile and link your code, i.e.

```
gcc solveQuadratic.c -lm
```

## Problem 2: Stress Transformations¶

To transform stress to a rotated coordinate system one can use the formula shown in the figure. We would ask you to write code that will take as input **4** values sigmaXX, sigmaYY, tauXY, and **theta** compute the stress in the transformed coordinate system. We would ask you to perform that transformation computation in a function other than **main** and to complicate things, but demonstrate you understand passing of arrays, pass the input and output stresses to this new function in fixed length arrays.

**Theory**: Stress transformation

**Given state**:

Note

If you need something extra work, write to a file the results of this transformation from **0** through **360** degrees in increments you input from the command line.

To send you data to a file named

results.out, start the application as follows:./appName 1.0 100.0 0.01 1 > results.out

### Problem 3: Compute PI numerically¶

The figure below shows an method to compute **pi** by numerical integration. We would like you to implement that computation in a **C** program.

Note

You will be using your solution on Day 4 as part of the parallel exercises.