Skip to content

Instantly share code, notes, and snippets.

@ScaredStorm
Last active September 17, 2017 13:06
Show Gist options
  • Save ScaredStorm/f4d130fec77c7c2fe84a01d8bb9dcd71 to your computer and use it in GitHub Desktop.
Save ScaredStorm/f4d130fec77c7c2fe84a01d8bb9dcd71 to your computer and use it in GitHub Desktop.
Kleine c++ course die ik heb gegeven.
#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