15 Commits
46 changed files with 428 additions and 118 deletions

No files matched your search

+4
View File
@@ -0,0 +1,4 @@
1_Grundlagen/code/matrix.exe
.out
.exe
.a
+28
View File
@@ -0,0 +1,28 @@
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: x86_64-w64-mingw32-gcc.exe build active file",
"command": "c:\\Users\\tobis\\mingw64\\bin\\x86_64-w64-mingw32-gcc.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "c:\\Users\\tobis\\mingw64\\bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}
+28
View File
@@ -0,0 +1,28 @@
{
"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"
}
@@ -0,0 +1,15 @@
#table(
columns: (1fr, auto, auto),
inset: 10pt,
align: horizon,
table.header(
[*Adresse*], [*Inhalt an der Adresse*], [Name der Variablen],
),
`0x7fffffffd7d8`,
\&int\*\*,
matrix,
`0x7fffffffd938`,
\&uadf,
matrix[0]
)
Binary file not shown.
@@ -0,0 +1,5 @@
#include <iostream>
int main(){
std::cout << "Hello, World!";
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,8 @@
#include <iostream>
using namespace std;
int main(){
int array[3] = {0, 1, 2};
for (int i = 0; i < 10; i++){
cout << array[i] << "\n";
}
}
@@ -0,0 +1,48 @@
.file "laufzeitfehler.cpp"
.text
#APP
.globl _ZSt21ios_base_library_initv
.section .rodata
.LC0:
.string "\n"
#NO_APP
.text
.globl main
.type main, @function
main:
.LFB1984:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
subq $16, %rsp
movl $0, -16(%rbp)
movl $1, -12(%rbp)
movl $2, -8(%rbp)
movl $0, -4(%rbp)
jmp .L2
.L3:
movl -4(%rbp), %eax
cltq
movl -16(%rbp,%rax,4), %eax
movl %eax, %esi
movl $_ZSt4cout, %edi
call _ZNSolsEi
movl $.LC0, %esi
movq %rax, %rdi
call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
addl $1, -4(%rbp)
.L2:
cmpl $9, -4(%rbp)
jle .L3
movl $0, %eax
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1984:
.size main, .-main
.ident "GCC: (GNU) 15.2.1 20260123 (Red Hat 15.2.1-7)"
.section .note.GNU-stack,"",@progbits
@@ -0,0 +1,3 @@
int addtwo(int s1, int s2)
{}
@@ -0,0 +1,9 @@
void addtwo();
int main(){
int a = 1;
int b = 2;
addtwo();
}
@@ -0,0 +1,5 @@
#include <link.h>
int add(int s1, int s2){
return s1 + s2;
}
Binary file not shown.
@@ -0,0 +1,9 @@
#define NUM 0
using namespace std;
int main(){
int i;
i = NUM;
cout << i << "\n" ;
}
@@ -0,0 +1,3 @@
#pragma once
#define NUM
Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
+42 -27
View File
@@ -1,34 +1,49 @@
#include<stdio.h> #include <stdio.h>
#include<stdlib.h> #include <stdlib.h>
#include "matrix.h"
int main() int ***build_matrix(int nx, int ny, int nz)
{ {
const int nx=3; int ***matrix = (int ***)malloc(nz * sizeof(int **));
const int ny=2; for (int z = 0; z < nz; z++)
int** matrix;
matrix = (int**)malloc(ny*sizeof(int*));
for(int y=0; y<ny; y++)
{ {
matrix[y] = (int*)malloc(nx*sizeof(int)); matrix[z] = (int **)malloc(ny * sizeof(int *));
for(int x=0; x<nx; x++) for (int y = 0; y < ny; y++)
{ {
matrix[y][x] = (y+1)*10 + x+1; matrix[z][y] = (int *)malloc(nx * sizeof(int));
for (int x = 0; x < nx; x++)
{
matrix[z][y][x] = (z + 1) * 100 + (y + 1) * 10 + x + 1;
}
} }
} }
return matrix;
for(int y=0; y<ny; y++)
{
for(int x=0; x<nx; x++)
{
printf("%i ",matrix[y][x]);
}
printf("\n");
}
for(int y=0; y<ny; y++)
{
free(matrix[y]);
}
free(matrix);
} }
void print_matrix(int ***matrix, int nx, int ny, int nz)
{
for (int z = 0; z < nz; z++)
{
for (int y = 0; y < ny; y++)
{
for (int x = 0; x < nx; x++)
{
printf("%i ", matrix[z][y][x]);
}
printf("\n");
}
}
}
void free_matrix(int ***matrix, int ny, int nz)
{
for (int z = 0; z < nz; z++)
{
for (int y = 0; y < ny; y++)
{
free(matrix[z][y]);
}
free(matrix[z]);
}
free(matrix);
}
+6
View File
@@ -0,0 +1,6 @@
#pragma once
int ***build_matrix(int nx, int ny, int nz);
void print_matrix(int ***matrix, int nx, int ny, int nz);
void free_matrix(int ***matrix, int ny, int nz);
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+31 -38
View File
@@ -1,45 +1,38 @@
#include "flugkurve01.h"
#include <iostream> #include <iostream>
using namespace std; using namespace std;
int main() Vektor mulVektor(Vektor vec, float num) {
{ Vektor ergebnis = {vec.x * num, vec.y * num};
// Körper: return ergebnis;
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: Vektor addVektor(Vektor vec1, Vektor vec2) {
const float X_BESCHLEUNIGUNG_GRAVITATION = 0; // [m/s^2] Vektor erg = {vec1.x + vec2.x, vec1.y + vec2.y};
const float Y_BESCHLEUNIGUNG_GRAVITATION = -9.81; // [m/s^2] return erg;
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 Koerper bewegeKoerper(Koerper korp, Vektor gesamtkraft, float dt) {
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 // Berechnung der Beschleunigung aus der Kraft
xPosition += dt * xGeschwindigkeit; float xBeschleunigung = gesamtkraft.x / korp.masse;
yPosition += dt * yGeschwindigkeit; float yBeschleunigung = gesamtkraft.y / korp.masse;
if(yPosition<=0) // Ermittlung der neuen Geschwindigkeit
{ korp.geschwindigkeit.x += dt * xBeschleunigung;
break; 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;
} }
+19
View File
@@ -0,0 +1,19 @@
#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);
+9
View File
@@ -0,0 +1,9 @@
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.
BIN
View File
Binary file not shown.
+22 -7
View File
@@ -1,10 +1,25 @@
#include <stdio.h>
#include "summe.h" #include "summe.h"
#include <iostream>
#include <vector>
int main() int main() {
{ /* const int N = 4;
const int N = 4; const float daten[N] = {1.0f,2.0f,3.0f,4.0f};
const float daten[N] = {1.0f,2.0f,3.0f,4.0f}; float summe = berechneSumme(daten,N);
float summe = berechneSumme(daten,N); printf("Summe = %f\n", summe); */
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;
} }
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+10 -5
View File
@@ -1,8 +1,13 @@
#include "summe.h" #include "summe.h"
float berechneSumme(const float* const wert, int anzahlWerte) /* float berechneSumme(const float *const wert, int anzahlWerte) {
{ return (anzahlWerte) ? *wert + berechneSumme(wert + 1, anzahlWerte - 1) : 0;
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;
} }
+3 -1
View File
@@ -1,6 +1,8 @@
#ifndef __SUMME_H #ifndef __SUMME_H
#define __SUMME_H #define __SUMME_H
#include <vector>
using namespace std;
/** /**
* Berechnet die Summe ueber eine Menge von Werten. * Berechnet die Summe ueber eine Menge von Werten.
* @param wert Werte * @param wert Werte
@@ -8,5 +10,5 @@
* @return Summe * @return Summe
*/ */
float berechneSumme(const float* const wert, int anzahlWerte); float berechneSumme(const float* const wert, int anzahlWerte);
int berechneSumme(vector<int> myvector);
#endif #endif
BIN
View File
Binary file not shown.
+1
View File
@@ -30,6 +30,7 @@ void function_checks() {
assert(fabs(koerper.geschwindigkeit.x - 10.7) < 0.1 && "Result must be 10.7"); 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.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"); 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"); assert(fabs(koerper.position.y - 65.1) < 0.1 && "Result must be 65.1");
cout << "bewegeKoerper erfolgreich" << endl; cout << "bewegeKoerper erfolgreich" << endl;
} }
+31 -38
View File
@@ -1,45 +1,38 @@
#include "flugkurve02.h"
#include <iostream> #include <iostream>
using namespace std; using namespace std;
int main() Vektor mulVektor(const Vektor &vec, const float &skalar){
{ Vektor ergebnis = {vec.x * skalar, vec.y * skalar};
// Körper: return ergebnis;
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: Vektor addVektor(const Vektor &vec1, const Vektor &vec2) {
const float X_BESCHLEUNIGUNG_GRAVITATION = 0; // [m/s^2] Vektor erg = {vec1.x + vec2.x, vec1.y + vec2.y};
const float Y_BESCHLEUNIGUNG_GRAVITATION = -9.81; // [m/s^2] return erg;
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 Koerper bewegeKoerper(const Koerper &korp, const Vektor &gesamtkraft,const float &dt) {
float xBeschleunigung = xGeschwindigkeit * REIBUNGSKOEFFIZIENT / masse + X_BESCHLEUNIGUNG_GRAVITATION; Koerper erg = {0, {0,0}, {0,0}};
float yBeschleunigung = yGeschwindigkeit * REIBUNGSKOEFFIZIENT / masse + Y_BESCHLEUNIGUNG_GRAVITATION; // Berechnung der Beschleunigung aus der Kraft
const float xBeschleunigung = gesamtkraft.x / korp.masse;
// Ermittlung der neuen Geschwindigkeit const float yBeschleunigung = gesamtkraft.y / korp.masse;
xGeschwindigkeit += dt * xBeschleunigung;
yGeschwindigkeit += dt * yBeschleunigung;
// Ermittlung der neuen Position // Ermittlung der neuen Geschwindigkeit
xPosition += dt * xGeschwindigkeit; erg.geschwindigkeit.x = korp.geschwindigkeit.x + dt * xBeschleunigung;
yPosition += dt * yGeschwindigkeit; erg.geschwindigkeit.y = korp.geschwindigkeit.y + dt * yBeschleunigung;
if(yPosition<=0) // Ermittlung der neuen Position
{ erg.position.x += korp.position.x + dt * erg.geschwindigkeit.x;
break; 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;
} }
+19
View File
@@ -0,0 +1,19 @@
#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);
BIN
View File
Binary file not shown.
+35 -1
View File
@@ -4,4 +4,38 @@
#include "flugkurve03.h" #include "flugkurve03.h"
using namespace std; using namespace std;
//to be implemented
Vektor 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 = {x + x, y + 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;
}
+35 -1
View File
@@ -1,4 +1,38 @@
#include <string> #include <string>
using namespace std; using namespace std;
// to be defined #pragma once
// Parametrierung der auf den Körper wirkende Kräfte:
class Vektor {
public:
float x; // [m/s^2]
float y; // [m/s^2]
Vektor() = default;
Vektor(float x, float y) {
this->x = x;
this->y = y;
}
void add(const Vektor &vec2);
void ausgabeVektor(const Vektor &vec);
void mul(const float &skalar);
};
// Körper:
class Koerper {
float masse; // [kg]
Vektor position;
Vektor geschwindigkeit;
public:
Koerper(float masse, Vektor position, Vektor geschwindigkeit) {
this->masse = masse;
this->position = position;
this->geschwindigkeit = geschwindigkeit;
};
float liefereMasse();
Koerper bewegeKoerper(const Koerper &korp, const Vektor &gesamtkraft,
const float &dt);
Vektor lieferePosition();
Vektor liefereGeschwindigkeit();
void bewegen(Vektor beschleunigung, float dt);
};