Last active
September 17, 2017 13:06
-
-
Save ScaredStorm/f4d130fec77c7c2fe84a01d8bb9dcd71 to your computer and use it in GitHub Desktop.
Kleine c++ course die ik heb gegeven.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <vector> | |
#include <cstdlib> | |
#include <ctime> | |
// zorg ervoor dat we de standaard std namespace niet meer hoeven te gebruiken | |
// zoals std::cout. Dit word nu gewoon cout | |
using namespace std; | |
// Functie die alle waardes in een array met 1 vergroten | |
// start = geheugen adres bij waar de array start | |
// end = geheugen adres waar de array stopt | |
void increase_one(int * start, int * end) | |
{ | |
// zet het geheugen adres van current gelijk op die van start | |
// dit doen we om het beter leesbaar te maken | |
int * current = start; | |
// begin een loop, zodra het adres van current niet gelijk is aan het adres van het einde ga dan door | |
while (current != end) | |
{ | |
++(*current); // dereference current (krijg de waarde van het adres) en verhoog hem met 1 | |
++current; // verhoog het adres van current met 1 | |
} | |
} | |
// Maak een nieuwe struct aan met de naam Vector3 | |
struct Vector3 | |
{ | |
// een vector3 heeft in 3D land 3 properties. De x, y en z. | |
float _x, _y, _z; | |
Vector3(float x, float y, float z) : _x(x), _y(y), _z(z) { } // assign de x, y en z in de constructor | |
// Operator om de RHS bij de LHS op te tellen | |
Vector3& operator+=(const Vector3& rhs) | |
{ | |
// pak het huidige object (this) en tel per property de waarde van de RHS erbij op | |
this->_x += rhs._x; | |
this->_y += rhs._y; | |
this->_z += rhs._z; | |
return *this; // return zichzelf | |
} | |
// zorgt ervoor dat de gebruiker de vector naar de ostream kan schrijven. | |
friend ostream& operator<< (ostream& stream, const Vector3& v) | |
{ | |
stream << "Vector3(x: " << v._x << ", y: " << v._y << ", z: " << v._z << ")"; | |
return stream; | |
} | |
}; | |
// maak een functie aan om de increase_one functie te laten gebruiken. | |
void increase_one_example() | |
{ | |
// maak een nieuwe int array met 9 waardes | |
int x[] = { 10, 20, 30, 40, 50, 11, 12, 13, 14 }; | |
// print de X array voordat we hem wijzigen. | |
cout << "Print de X array:\n"; | |
for (int i = 0; i < 9; i++) | |
{ | |
cout << x[i] << endl; | |
} | |
// open een nieuwe regel | |
cout << endl; | |
// verhoog alle waardes in de array met 1 | |
increase_one(x, x + 9); // we weten zelf dat de array 9 elementen bevat, weet je het niet dat kan je ook sizeof(x)/sizeof(x[0]) gebruiken | |
// print de X array nadat we hem hebben veranderd | |
cout << "Print de modified X array:\n"; | |
for (int i = 0; i < 9; i++) | |
{ | |
cout << x[i] << endl; | |
} | |
} | |
// main entry point van ons programma | |
int main(int argc, char** argv) | |
{ | |
// zet de random seed op de tijd van onze computer | |
srand((unsigned int)time(nullptr)); | |
// maak een nieuwe vector aan vol met Vector3 en geef ze een random waarde mee | |
vector<Vector3> vectors; | |
for (int i = 0; i < 9; i++) | |
{ | |
vectors.push_back(Vector3(rand() % 1000, rand() % 1000, rand() % 1000)); | |
} | |
// hier voegen we nog 1 Vector3 toe buiten de loop met de waarde 10, 10, 10 (hier kan je evt een nieuwe constructor voor maken) | |
vectors.push_back(Vector3(10, 10, 10)); | |
// loop over alle Vector3 in vectors (range based for) | |
for (const auto& v3 : vectors) | |
cout << v3 << endl; // print de Vector3 | |
cout << endl; // Voeg een lege regel toe | |
vectors[0] += vectors[1]; // Tel de 2de Vector3 bij de eerste op | |
// loop weer over alle Vector3 in vectors (range based for) | |
for (const auto& v3 : vectors) | |
cout << v3 << endl; // print de Vector3 | |
increase_one_example(); | |
cin.get(); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment