Compare commits

..

No commits in common. "main" and "Aufg1-dev-tobi" have entirely different histories.

23 changed files with 96 additions and 182 deletions

3
.gitignore vendored
View File

@ -1,4 +1 @@
1_Grundlagen/code/matrix.exe
.out
.exe
.a

View File

@ -1,28 +0,0 @@
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ build active file",
"command": "/usr/bin/g++",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}

View File

@ -1,3 +1,4 @@
#include <iostream>
#define NUM 0
using namespace std;

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,38 +1,45 @@
#include "flugkurve01.h"
#include <iostream>
using namespace std;
Vektor mulVektor(Vektor vec, float num) {
Vektor ergebnis = {vec.x * num, vec.y * num};
return ergebnis;
}
Vektor addVektor(Vektor vec1, Vektor vec2) {
Vektor erg = {vec1.x + vec2.x, vec1.y + vec2.y};
return erg;
}
Koerper bewegeKoerper(Koerper korp, Vektor gesamtkraft, float dt) {
// Berechnung der Beschleunigung aus der Kraft
float xBeschleunigung = gesamtkraft.x / korp.masse;
float yBeschleunigung = gesamtkraft.y / korp.masse;
// Ermittlung der neuen Geschwindigkeit
korp.geschwindigkeit.x += dt * xBeschleunigung;
korp.geschwindigkeit.y += dt * yBeschleunigung;
// Ermittlung der neuen Position
korp.position.x += dt * korp.geschwindigkeit.x;
korp.position.y += dt * korp.geschwindigkeit.y;
return korp;
}
void ausgabeKoerper(Koerper korp){
cout << "x = " << korp.position.x << "y = " << korp.position.y;
}
void ausgabeVektor(Vektor vec){
cout << "x = " << vec.x << endl;
cout << "y = " << vec.y << endl;
int main()
{
// Körper:
float masse = 10; // [kg]
float xPosition = 0; // [m]
float yPosition = 0; // [m]
float xGeschwindigkeit = 10; // [m/s]
float yGeschwindigkeit = 10; // [m/s]
// Parametrierung der auf den Körper wirkende Kräfte:
const float X_BESCHLEUNIGUNG_GRAVITATION = 0; // [m/s^2]
const float Y_BESCHLEUNIGUNG_GRAVITATION = -9.81; // [m/s^2]
const float REIBUNGSKOEFFIZIENT = -5; // [kg/s]
// Sorgt dafür, dass 2 Nachkommastellen angezeigt werden:
cout << fixed;
cout.precision(2);
// Simulation:
const float dt = 0.1; // [s]
for(;;)
{
cout << "(" << xPosition << "," << yPosition << ")" << endl;
// Berechnung der Beschleunigung aus der Kraft
float xBeschleunigung = xGeschwindigkeit * REIBUNGSKOEFFIZIENT / masse + X_BESCHLEUNIGUNG_GRAVITATION;
float yBeschleunigung = yGeschwindigkeit * REIBUNGSKOEFFIZIENT / masse + Y_BESCHLEUNIGUNG_GRAVITATION;
// Ermittlung der neuen Geschwindigkeit
xGeschwindigkeit += dt * xBeschleunigung;
yGeschwindigkeit += dt * yBeschleunigung;
// Ermittlung der neuen Position
xPosition += dt * xGeschwindigkeit;
yPosition += dt * yGeschwindigkeit;
if(yPosition<=0)
{
break;
}
}
}

View File

@ -1,19 +0,0 @@
#pragma once
// Parametrierung der auf den Körper wirkende Kräfte:
struct Vektor {
float x; // [m/s^2]
float y; // [m/s^2]
};
// Körper:
struct Koerper {
float masse; // [kg]
Vektor position;
Vektor geschwindigkeit;
};
Vektor addVektor(Vektor vec1, Vektor vec2);
Vektor mulVektor(Vektor vec, float skalar);
Koerper bewegeKoerper(Koerper korp, Vektor gesamtkraft, float dt);
void ausgabeKoerper(Koerper korp);
void ausgabeVektor(Vektor vec);

View File

@ -1,9 +0,0 @@
const float* const wert
Welche Bedeuting haben das erste und zweite const?
1. const: es ist ein konstanter float
2. const: es ist ein konstanter zeiger
Welchen Nutzen könnte die Verwendung von const an den beiden Stellen bieten?
An der 1. Stelle: sichergehen, dass der Wert mit den gearbeitet wird nicht geändert wird
An der 2. Stelle: sichergehen, dass der Zeiger nicht auf etwas anderes zeigt, womit sich der Wert ändern würde.

Binary file not shown.

View File

@ -1,25 +1,10 @@
#include <stdio.h>
#include "summe.h"
#include <iostream>
#include <vector>
int main() {
/* const int N = 4;
const float daten[N] = {1.0f,2.0f,3.0f,4.0f};
float summe = berechneSumme(daten,N);
printf("Summe = %f\n", summe); */
string name;
int anzahlSummanten;
int hilfvar;
vector<int> summanten;
cout << "Was ist dein Name?" << endl;
cin >> name;
cout << "Hallo " << name << ", Wie viele Zahlen willst du addieren?" << endl;
cin >> anzahlSummanten;
for (int i = 0; i < anzahlSummanten; i++) {
cout << "Der " << i + 1 << ". Summant ist:" << endl;
cin >> hilfvar;
summanten.push_back(hilfvar);
}
cout << name << ", die Summe ist: " << berechneSumme(summanten) << endl;
cout << "Auf Wiedersehen " << name << endl;
int main()
{
const int N = 4;
const float daten[N] = {1.0f,2.0f,3.0f,4.0f};
float summe = berechneSumme(daten,N);
printf("Summe = %f\n", summe);
}

Binary file not shown.

Binary file not shown.

View File

@ -1,13 +1,8 @@
#include "summe.h"
/* float berechneSumme(const float *const wert, int anzahlWerte) {
return (anzahlWerte) ? *wert + berechneSumme(wert + 1, anzahlWerte - 1) : 0;
} */
int berechneSumme(vector<int> myvector) {
int summe;
for (unsigned int i = 0; i < myvector.size(); i++) {
summe += myvector[i];
}
return summe;
float berechneSumme(const float* const wert, int anzahlWerte)
{
return (anzahlWerte) ? *wert+berechneSumme(wert+1, anzahlWerte-1) : 0;
}

View File

@ -1,8 +1,6 @@
#ifndef __SUMME_H
#define __SUMME_H
#include <vector>
using namespace std;
/**
* Berechnet die Summe ueber eine Menge von Werten.
* @param wert Werte
@ -10,5 +8,5 @@ using namespace std;
* @return Summe
*/
float berechneSumme(const float* const wert, int anzahlWerte);
int berechneSumme(vector<int> myvector);
#endif

Binary file not shown.

View File

@ -30,7 +30,6 @@ void function_checks() {
assert(fabs(koerper.geschwindigkeit.x - 10.7) < 0.1 && "Result must be 10.7");
assert(fabs(koerper.geschwindigkeit.y - 9.3) < 0.1 && "Result must be 9.3");
assert(fabs(koerper.position.x - 74.9) < 0.1 && "Result must be 74.9");
cout << koerper.position.y << endl;
assert(fabs(koerper.position.y - 65.1) < 0.1 && "Result must be 65.1");
cout << "bewegeKoerper erfolgreich" << endl;
}

View File

@ -1,38 +1,45 @@
#include "flugkurve02.h"
#include <iostream>
using namespace std;
Vektor mulVektor(const Vektor &vec, const float &skalar){
Vektor ergebnis = {vec.x * skalar, vec.y * skalar};
return ergebnis;
}
Vektor addVektor(const Vektor &vec1, const Vektor &vec2) {
Vektor erg = {vec1.x + vec2.x, vec1.y + vec2.y};
return erg;
}
Koerper bewegeKoerper(const Koerper &korp, const Vektor &gesamtkraft,const float &dt) {
Koerper erg = {0, {0,0}, {0,0}};
// Berechnung der Beschleunigung aus der Kraft
const float xBeschleunigung = gesamtkraft.x / korp.masse;
const float yBeschleunigung = gesamtkraft.y / korp.masse;
// Ermittlung der neuen Geschwindigkeit
erg.geschwindigkeit.x = korp.geschwindigkeit.x + dt * xBeschleunigung;
erg.geschwindigkeit.y = korp.geschwindigkeit.y + dt * yBeschleunigung;
// Ermittlung der neuen Position
erg.position.x += korp.position.x + dt * erg.geschwindigkeit.x;
erg.position.y += korp.position.y + dt * erg.geschwindigkeit.y;
return erg;
}
void ausgabeKoerper(const Koerper &korp){
cout << "x = " << korp.position.x << "y = " << korp.position.y;
}
void ausgabeVektor(const Vektor &vec){
cout << "x = " << vec.x << endl;
cout << "y = " << vec.y << endl;
int main()
{
// Körper:
float masse = 10; // [kg]
float xPosition = 0; // [m]
float yPosition = 0; // [m]
float xGeschwindigkeit = 10; // [m/s]
float yGeschwindigkeit = 10; // [m/s]
// Parametrierung der auf den Körper wirkende Kräfte:
const float X_BESCHLEUNIGUNG_GRAVITATION = 0; // [m/s^2]
const float Y_BESCHLEUNIGUNG_GRAVITATION = -9.81; // [m/s^2]
const float REIBUNGSKOEFFIZIENT = -5; // [kg/s]
// Sorgt dafür, dass 2 Nachkommastellen angezeigt werden:
cout << fixed;
cout.precision(2);
// Simulation:
const float dt = 0.1; // [s]
for(;;)
{
cout << "(" << xPosition << "," << yPosition << ")" << endl;
// Berechnung der Beschleunigung aus der Kraft
float xBeschleunigung = xGeschwindigkeit * REIBUNGSKOEFFIZIENT / masse + X_BESCHLEUNIGUNG_GRAVITATION;
float yBeschleunigung = yGeschwindigkeit * REIBUNGSKOEFFIZIENT / masse + Y_BESCHLEUNIGUNG_GRAVITATION;
// Ermittlung der neuen Geschwindigkeit
xGeschwindigkeit += dt * xBeschleunigung;
yGeschwindigkeit += dt * yBeschleunigung;
// Ermittlung der neuen Position
xPosition += dt * xGeschwindigkeit;
yPosition += dt * yGeschwindigkeit;
if(yPosition<=0)
{
break;
}
}
}

View File

@ -1,19 +0,0 @@
#pragma once
// Parametrierung der auf den Körper wirkende Kräfte:
struct Vektor {
float x; // [m/s^2]
float y; // [m/s^2]
};
// Körper:
struct Koerper {
float masse; // [kg]
Vektor position;
Vektor geschwindigkeit;
};
Vektor addVektor(const Vektor &vec1, const Vektor &vec2);
Vektor mulVektor(const Vektor &vec, const float &skalar);
Koerper bewegeKoerper(const Koerper &korp, const Vektor &gesamtkraft,const float &dt);
void ausgabeKoerper(const Koerper &korp);
void ausgabeVektor(const Vektor &vec);

Binary file not shown.