<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; } ```