<sub class="descriptionSection">06-11-2024 02:51:pm // #Tag // [[Programmierung]]</sub>
____
## Aufgabe 1
```cpp
#include <iostream>
#include <vector>
using namespace std;
int summeVector(const vector<int>& v) {
int sum = 0;
for (int element : v) {
sum += element;
}
return sum;
}
int main() {
vector<int> v;
srand(time(nullptr));
for (int i = 0; i < 10; i++) {
v.push_back(rand() % 2000 - 1000);
cout << v.back() << endl;
}
int min = 1000;
int max = -1000;
int sum = summeVector(v);
for (int element : v) {
if(element < min) {
min = element;
}
if(element > max) {
max = element;
}
}
cout << "Min: " << min << endl;
cout << "Max: " << max << endl;
cout << "Sum: " << sum << endl;
return 0;
}
```
## Aufgabe 2
```cpp
#include <iostream>
#include <vector>
using namespace std;
bool isAlreadyInVector(vector<int> v, int numToCheck) {
for(int value : v) {
if(value == numToCheck) {
return true;
}
}
return false;
}
int main() {
vector<int> v;
srand(time(nullptr));
for(int i = 0; i < 6; i++) {
int cache = rand() % 49 + 1;
if(isAlreadyInVector(v, cache)) {
i--;
} else {
v.push_back(cache);
}
}
for(int value : v) {
cout << value << " ";
}
return 0;
}
```
## Aufgabe 3
### Aufgabe 3 - Vectors
```cpp
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<double> v;
vector<double> vReversed;
do {
cout << "Enter a number (0 to end): ";
double num;
cin >> num;
v.push_back(num);
}
while(v.back() != 0);
cout << v.size() << endl;
for(int i = v.size()-2; i >= 0; i--) {
cout << v[i] << " ";
vReversed.push_back(v[i]);
}
v = vReversed;
return 0;
}
```
### Aufgabe 3 - Stacks
```cpp
#include <iostream>
#include <stack>
using namespace std;
int main() {
stack<double> s;
stack<double> sReversed;
do {
cout << "Enter a number (0 to end): ";
double num;
cin >> num;
s.push(num);
}
while(s.top() != 0);
s.pop();
while(s.size() > 0) {
cout << s.top() << " ";
sReversed.push(s.top());
s.pop();
}
cout << endl;
s = sReversed;
return 0;
}
```
## Aufgabe 4
```cpp
#include <cmath>
#include <iostream>
#include <vector>
using namespace std;
int reduceIncreaseVal(double in, int &exponent) {
exponent = 0;
while(in < 100 || in > 1000) {
if(in < 100) {
in = in * 10;
exponent--;
}
if(in > 1000) {
in = in / 10;
exponent++;
}
}
return in;
}
int calcNearestResistor(const vector<int> widerstaende, double eingabe) {
int currentNearest = 0;
int exponent;
eingabe = reduceIncreaseVal(eingabe, exponent);
cout << "Using: " << eingabe << endl;
for(int val : widerstaende) {
if(currentNearest == 0 || abs(eingabe - val) < abs(eingabe - currentNearest)) {
currentNearest = val;
}
}
double copyOfNearrest = currentNearest;
double normwert = copyOfNearrest * pow(10, exponent);
cout << "Der Normwert ist: " << normwert << endl;
return currentNearest;
}
int main() {
vector<int> widerstaende = {100, 150, 220, 330, 470, 680, 1000};
double in;
cout << "Gebe einen double Wert ein: ";
cin >> in;
cout << calcNearestResistor(widerstaende, in) << endl;
return 0;
}
```
## Expertenaufgabe
```cpp
#include <iostream>
#include <map>
#include <vector>
using namespace std;
int genRandNum(int min, int max) {
return rand() % (max - min + 1) + min;
}
int main() {
vector<int> v;
map<int, int> m;
srand(time(nullptr));
int min = genRandNum(1, 100000);
int max = genRandNum(1, 100000);
for(int i = 0; i < 10; i++) {
v.push_back(genRandNum(min, max));
}
for(int i : v) {
if(!m[i]) {
m[i] = 1;
}
else {
m[i]++;
}
}
for(auto i : m) {
cout << i.first << " " << i.second << endl;
}
return 0;
}
```