diff --git "a/infobank/Articles/\303\230ving 9.pdf" "b/infobank/Articles/\303\230ving 9.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..27a3d3e4df6a5b7cb9be4ca5054e53b53e492e26 Binary files /dev/null and "b/infobank/Articles/\303\230ving 9.pdf" differ diff --git a/templates/_folder_Exercises/O09/MyArray.cpp b/templates/_folder_Exercises/O09/MyArray.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ddddc2946f5e2086305bd41d7121ef813081e029 --- /dev/null +++ b/templates/_folder_Exercises/O09/MyArray.cpp @@ -0,0 +1,5 @@ +#include "MyArray.h" + +// BEGIN 5d + +// END 5d \ No newline at end of file diff --git a/templates/_folder_Exercises/O09/MyArray.h b/templates/_folder_Exercises/O09/MyArray.h new file mode 100644 index 0000000000000000000000000000000000000000..52b370f66c00e6b8949c6625389a0633d39ea044 --- /dev/null +++ b/templates/_folder_Exercises/O09/MyArray.h @@ -0,0 +1,22 @@ +#pragma once +#include <iostream> +#include <exception> + +// BEGIN 5a + +// END 5a +class MyArray +{ + private: + // BEGIN 5b + + // END 5b + public: + // BEGIN 5c + + // END 5c +}; + +// BEGIN 5d + +// END 5d \ No newline at end of file diff --git a/templates/_folder_Exercises/O09/Stopwatch.cpp b/templates/_folder_Exercises/O09/Stopwatch.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a4be1c713aee747fd38ae5ad501e6a18470ac223 --- /dev/null +++ b/templates/_folder_Exercises/O09/Stopwatch.cpp @@ -0,0 +1,12 @@ +#include "Stopwatch.h" + +void Stopwatch::start() { + startTime = std::chrono::steady_clock::now(); +} + +double Stopwatch::stop() { + std::chrono::time_point endTime = std::chrono::steady_clock::now(); + long durationInMicroseconds = std::chrono::duration_cast<std::chrono::microseconds>(endTime - startTime).count(); + double durationInSeconds = double(durationInMicroseconds)/1000000.0; + return durationInSeconds; +} \ No newline at end of file diff --git a/templates/_folder_Exercises/O09/Stopwatch.h b/templates/_folder_Exercises/O09/Stopwatch.h new file mode 100644 index 0000000000000000000000000000000000000000..5d7b1c36ed69d9685d1072f1fcc8b332dd7d18b6 --- /dev/null +++ b/templates/_folder_Exercises/O09/Stopwatch.h @@ -0,0 +1,19 @@ +#pragma once +#include <chrono> + +// This class abstracts some (somewhat) nasty code that is +// definitely outside the scope of this course. +// Its main purpose is to return the amount of time +// taken by the program in main.cpp + +// Calling start() starts the stopwatch +// Calling stop() stops it and returns the amount of time +// that has elapsed since start() was called in seconds + +class Stopwatch { + std::chrono::time_point<std::chrono::steady_clock> startTime; + +public: + void start(); + double stop(); +}; \ No newline at end of file diff --git a/templates/_folder_Exercises/O09/main.cpp b/templates/_folder_Exercises/O09/main.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a646b8266d9aa6b67e5f2af5362f1f3ee2f246cf --- /dev/null +++ b/templates/_folder_Exercises/O09/main.cpp @@ -0,0 +1,29 @@ +#include "Stopwatch.h" +#include "measurePerformance.h" +#include "optimizeVector.h" +#include "optimizationTask.h" +#include "templatefunctions.h" +#include "MyArray.h" + + + +int main() { + // Oppgave 1 + //measurePerformanceUnique(); + //measurePerformanceShared(); + //measurePerformanceStack(); + //measurePerformanceHeap(); + + // Oppgave 2 + //optimizeVector(); + + // Oppgave 3 + //optimizationTask(); + + // Oppgave 4 + //testTemplateFunctions(); + + // Oppgave 5 + //testMyArray(); + return 0; +} \ No newline at end of file diff --git a/templates/_folder_Exercises/O09/measurePerformance.cpp b/templates/_folder_Exercises/O09/measurePerformance.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e1117bdfaf793d55f2ec43dbf368fca45ae676ac --- /dev/null +++ b/templates/_folder_Exercises/O09/measurePerformance.cpp @@ -0,0 +1,9 @@ +#include "Stopwatch.h" +#include <memory> +#include <array> +#include <iostream> + + +// BEGIN 1a + +// END 1a \ No newline at end of file diff --git a/templates/_folder_Exercises/O09/measurePerformance.h b/templates/_folder_Exercises/O09/measurePerformance.h new file mode 100644 index 0000000000000000000000000000000000000000..aa67ec7ec9782e452c81de4d85d965d52fca5d45 --- /dev/null +++ b/templates/_folder_Exercises/O09/measurePerformance.h @@ -0,0 +1,7 @@ +#pragma once + +double measurePerformanceUnique(); +double measurePerformanceShared(); + +double measurePerformanceStack(); +double measurePerformanceHeap(); diff --git a/templates/_folder_Exercises/O09/optimizationTask.cpp b/templates/_folder_Exercises/O09/optimizationTask.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8516f47fb939cac82d2b1474628b7151655161be --- /dev/null +++ b/templates/_folder_Exercises/O09/optimizationTask.cpp @@ -0,0 +1,49 @@ +#include "Stopwatch.h" +#include <vector> +#include <iostream> + +// Utdelt program til oppgave 3 + +// BEGIN 3b +double sumMatrix(std::vector<std::vector<double>> matrix){ + double sum = 0; + for (int row = 0; row < matrix.size(); row++){ + for (int col = 0; col < matrix.size(); col++){ + double value = matrix.at(row).at(col); + sum += value; + } + } + return sum; +} + +void setDiagonalValue(std::vector<std::vector<double>>& matrix, double newValue){ + for (int row = 0; row < matrix.size(); row++){ + for (int col = 0; col < matrix.size(); col++){ + bool isDiagonal = (row == col); + if (isDiagonal){ + matrix.at(row).at(col) = newValue; + } + } + } +} + +void optimizationTask(){ + Stopwatch stopwatch; + stopwatch.start(); + const int matrixSize = 10000; + + // Oppretter nullmatrisen direkte ved bruk av konstruktøren som tar inn antall og verdi. + std::vector<std::vector<double>> matrix(matrixSize, std::vector<double>(matrixSize, 0.0)); + + // Setter alle elementer på diagonalen til 0.41 + setDiagonalValue(matrix, 0.41); + + // Summerer alle elementene i matrisen + double total = sumMatrix(matrix); + + double coolerNumber = total + 2; + std::cout << "TDT" << coolerNumber << std::endl; + + std::cout << "Time taken: " << stopwatch.stop() << "seconds" << std::endl; +} +// END 3b \ No newline at end of file diff --git a/templates/_folder_Exercises/O09/optimizationTask.h b/templates/_folder_Exercises/O09/optimizationTask.h new file mode 100644 index 0000000000000000000000000000000000000000..cf78e2f295e4dbccd2a5dcf9a2440a12811cf83e --- /dev/null +++ b/templates/_folder_Exercises/O09/optimizationTask.h @@ -0,0 +1,3 @@ +#pragma once + +void optimizationTask(); \ No newline at end of file diff --git a/templates/_folder_Exercises/O09/optimizeVector.cpp b/templates/_folder_Exercises/O09/optimizeVector.cpp new file mode 100644 index 0000000000000000000000000000000000000000..408642e87e50b2c0fbdc535b467b688bbb31b281 --- /dev/null +++ b/templates/_folder_Exercises/O09/optimizeVector.cpp @@ -0,0 +1,20 @@ +#include "Stopwatch.h" +#include "optimizeVector.h" +#include <vector> +#include <iostream> + + +// BEGIN 2a + +// END 2a + + +void optimizeVector(){ + // BEGIN 2d + + // END 2d + + // BEGIN 2e + + // END 2e +} \ No newline at end of file diff --git a/templates/_folder_Exercises/O09/optimizeVector.h b/templates/_folder_Exercises/O09/optimizeVector.h new file mode 100644 index 0000000000000000000000000000000000000000..2bb4d01a5eece9adeda8ca5d82a03dd32d4d0b97 --- /dev/null +++ b/templates/_folder_Exercises/O09/optimizeVector.h @@ -0,0 +1,4 @@ +#pragma once + +void testVector(); +void optimizeVector(); \ No newline at end of file diff --git a/templates/_folder_Exercises/O09/templatefunctions.cpp b/templates/_folder_Exercises/O09/templatefunctions.cpp new file mode 100644 index 0000000000000000000000000000000000000000..dc4e46d785d36d49cf67d4c9a395f32297ca51a6 --- /dev/null +++ b/templates/_folder_Exercises/O09/templatefunctions.cpp @@ -0,0 +1,5 @@ +#include "templatefunctions.h" + +void testTemplateFunctions(){ + // Her kan du teste templatefunksjonene dine +} diff --git a/templates/_folder_Exercises/O09/templatefunctions.h b/templates/_folder_Exercises/O09/templatefunctions.h new file mode 100644 index 0000000000000000000000000000000000000000..dbbbc813a1dc102da91eed689532079f67f7c8ec --- /dev/null +++ b/templates/_folder_Exercises/O09/templatefunctions.h @@ -0,0 +1,15 @@ +#pragma once +#include <random> +#include <iostream> +#include <string> +#include <vector> + +// BEGIN 4a + +// END 4a + +// BEGIN 4b + +// END 4b + +void testTemplateFunctions(); \ No newline at end of file