Exercise 3
Added Exercise 3 with solutions and README to Repository
This commit is contained in:
19
Informatik_I/Exercise_3/Task_4a/README.md
Normal file
19
Informatik_I/Exercise_3/Task_4a/README.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# Task
|
||||
|
||||
The number $\pi$ can be defined through various infinite sums. The accuracy increases with the number of terms. Considering the following sum, that we call sum 1:
|
||||
|
||||
$$\frac{\pi}{4} = \sum_{j=0}^{m-1} \frac{(-1)^j}{2j + 1} = 1 - \frac{1}{3} + \frac{1}{5} - \frac{1}{7} + ...$$
|
||||
|
||||
Note that $m$ is the number of the terms in the sum. For example, $m=2$ refers to the sum of the terms $1$ (for $j=0$) and $-\frac{1}{3}$ (for $j=1$). This examples yields a value of $4 \cdot (1-\frac{1}{3})$ for $\pi$.
|
||||
|
||||
Write a program that computes and outputs an approximation of Pi, based on sum 1. The input for your program is the number of **terms** $m$ of sum 1 that should be considered in the calculation. The output is the approximation of $\pi$.
|
||||
|
||||
## Input
|
||||
|
||||
A number $m \geq 1$.
|
||||
|
||||
## Output
|
||||
|
||||
The approximation of $\pi$ given by $4 \sum_{j=0}^{m-1} \frac{(-1)^j}{2j + 1}$, rounded to 6 significant digits. Note that 6 significant digits is the default precision of C++ for printing floating-point values. Use a variable of type double to calculate the sum. Note that that $x^0$ is 1 (if $x \neq 0$).
|
||||
|
||||
**Important**: the use of functions from the math library (e.g., pow) is prohibited.
|
30
Informatik_I/Exercise_3/Task_4a/main.cpp
Normal file
30
Informatik_I/Exercise_3/Task_4a/main.cpp
Normal file
@@ -0,0 +1,30 @@
|
||||
#include <iostream>
|
||||
|
||||
double power(double n, double e) { // Self defined function for exponent
|
||||
int res = 1;
|
||||
for (; e > 0; --e) {
|
||||
res *= n;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
int main() {
|
||||
double m; // User Input
|
||||
double pi = 0; // Pi
|
||||
float res; // Outputed result with 6 significant digits
|
||||
|
||||
std::cin >> m;
|
||||
|
||||
if (m < 1) { // Check if Input is greater than 1.
|
||||
return 0;
|
||||
} else {
|
||||
for (int i = 0; i < m; ++i) {
|
||||
pi = pi + 4 * ((power(-1, i)) / ((2 * i) + 1)); // calculate Pi
|
||||
}
|
||||
|
||||
res = (float)(pi); // round to 6 significant digits
|
||||
std::cout << res;
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user