commit 0c161fef35923a8ba2185d361afe2fb40769cd75
parent 223130840c990274e45f97b57c2a6cfc427437b0
Author: Amit Dutta <mail@amit.is-a.dev>
Date: Sun, 26 Jul 2026 12:43:21 +0530
added assignments
Diffstat:
4 files changed, 154 insertions(+), 3 deletions(-)
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
@@ -18,7 +18,7 @@
{
"label": "C/C++: build active file",
"type": "shell",
- "command": "if [ \"${fileExtname}\" = \".cpp\" ]; then c=\"g++\"; else c=\"gcc\"; fi; exe=\"${fileDirname}/${fileBasenameNoExtension}\"; B=\"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\"; fnH() { if [ \"${2:-true}\" = \"true\" ]; then echo \"\"; fi; echo -e \"\\e[90m$B\\e[0m\"; echo -e \" \\e[36m$1\\e[0m\"; echo -e \"\\e[90m$B\\e[0m\"; echo \"\"; }; fnR() { printf \"%-15s\" \"$1\"; echo -e \"\\e[${3:-0}m$2\\e[0m\"; }; fnT() { if [ $1 -ge 1000 ]; then echo \"$((1 / 1000)) sec ($1 ms)\"; else echo \"$1 ms\"; fi; }; fnH \"BUILD\" false; echo \"Compiling ${fileBasename}...\"; echo \"\"; start_t=$(date +%s%3N); out=$($c -fdiagnostics-color=always -g \"${file}\" -o \"$exe\" 2>&1); bexit=$?; end_t=$(date +%s%3N); bms=$((end_t - start_t)); if [ -n \"$out\" ]; then echo -e \"$out\"; fi; w=$(echo \"$out\" | grep -ic \"warning:\"); e=$(echo \"$out\" | grep -ic \"error:\"); if [ $bexit -eq 0 ]; then bs=\"✓ Success\"; bc=\"32\"; else bs=\"✗ Failed\"; bc=\"31\"; fi; echo -e \"\\e[${bc}m${bs} in $(fnT $bms)\\e[0m\"; fnH \"BUILD REPORT\"; fnR \"File\" \"${fileBasename}\"; fnR \"Compiler\" \"$c\"; fnR \"Target\" \"x64\"; fnR \"Build\" \"$bs\" \"$bc\"; if [ $w -gt 0 ]; then wc=\"33\"; else wc=\"0\"; fi; fnR \"Warnings\" \"$w\" \"$wc\"; if [ $e -gt 0 ]; then ec=\"31\"; else ec=\"0\"; fi; fnR \"Errors\" \"$e\" \"$ec\"; if [ -f \"$exe\" ]; then sz=$(du -h \"$exe\" | cut -f1); fnR \"Size\" \"$sz\"; fi; fnR \"Build Time\" \"$(fnT $bms)\"; if [ $bexit -ne 0 ]; then exit 1; fi; exit 0",
+ "command": "if [ \"${fileExtname}\" = \".cpp\" ]; then c=\"g++\"; else c=\"gcc\"; fi; exe=\"${fileDirname}/${fileBasenameNoExtension}\"; fnT() { if [ $1 -ge 1000 ]; then echo \"$(($1/1000)).$(( ($1%1000)/100 ))s\"; else echo \"${1}ms\"; fi; }; echo -e \"\\e[36m▶\\e[0m Building \\e[1m${fileBasename}\\e[0m \\e[90m($c)\\e[0m\"; start_t=$(date +%s%3N); out=$($c -fdiagnostics-color=always -g \"${file}\" -o \"$exe\" 2>&1); bexit=$?; end_t=$(date +%s%3N); bms=$((end_t - start_t)); if [ -n \"$out\" ]; then echo \"$out\"; fi; w=$(echo \"$out\" | grep -ic \"warning:\"); e=$(echo \"$out\" | grep -ic \"error:\"); if [ $bexit -eq 0 ]; then sz=$(du -h \"$exe\" 2>/dev/null | cut -f1); echo -e \"\\e[32m✓ build ok\\e[0m \\e[90min $(fnT $bms) · $w warn · $sz\\e[0m\"; else echo -e \"\\e[31m✗ build failed\\e[0m \\e[90min $(fnT $bms) · $e error(s) · $w warn\\e[0m\"; fi; exit $bexit",
"args": [],
"options": {
"cwd": "${fileDirname}",
@@ -34,7 +34,7 @@
{
"label": "C/C++: build and run active file",
"type": "shell",
- "command": "if [ \"${fileExtname}\" = \".cpp\" ]; then c=\"g++\"; else c=\"gcc\"; fi; exe=\"${fileDirname}/${fileBasenameNoExtension}\"; logDir=\"/home/notamitgamer/Documents/bsc/buildLog\"; mkdir -p \"$logDir\"; ts=$(date +\"%Y-%m-%d_%H-%m-%M_%S\"); logFile=\"$logDir/buildLog_$ts.txt\"; B=\"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\"; fnH() { title=\"$1\"; show_c=\"${2:-true}\"; show_l=\"${3:-true}\"; nl=\"${4:-true}\"; if [ \"$show_c\" = \"true\" ]; then if [ \"$nl\" = \"true\" ]; then echo \"\"; fi; echo -e \"\\e[90m$B\\e[0m\"; echo -e \" \\e[36m$title\\e[0m\"; echo -e \"\\e[90m$B\\e[0m\"; echo \"\"; fi; if [ \"$show_l\" = \"true\" ]; then if [ \"$nl\" = \"true\" ]; then echo \"\" >> \"$logFile\"; fi; echo \"$B\" >> \"$logFile\"; echo \" $title\" >> \"$logFile\"; echo \"$B\" >> \"$logFile\"; echo \"\" >> \"$logFile\"; fi; }; fnR() { pad=$(printf \"%-16s\" \"$1\"); echo -e \"${pad}\\e[${3:-0}m$2\\e[0m\"; echo \"${pad}$2\" >> \"$logFile\"; }; fnL() { echo -e \"\\e[${2:-0}m$1\\e[0m\"; clean=$(echo \"$1\" | sed -r \"s/\\x1B\\[([0-9]{1,3}(;[0-9]{1,3})*)?[mGK]//g\"); echo \"$clean\" >> \"$logFile\"; }; fnT() { if [ $1 -ge 1000 ]; then echo \"$(($1 / 1000)) sec ($1 ms)\"; else echo \"$1 ms\"; fi; }; ver=$($c --version | head -n 1); fnH \"BUILD\" true true false; fnL \"Compiling ${fileBasename}...\" \"0\"; fnL \"$ver\" \"90\"; fnL \"\" \"0\"; start_t=$(date +%s%3N); out=$($c -fdiagnostics-color=always -g \"${file}\" -o \"$exe\" 2>&1); bexit=$?; end_t=$(date +%s%3N); bms=$((end_t - start_t)); if [ -n \"$out\" ]; then echo -e \"$out\"; cleanOut=$(echo \"$out\" | sed -r \"s/\\x1B\\[([0-9]{1,3}(;[0-9]{1,3})*)?[mGK]//g\"); echo \"$cleanOut\" >> \"$logFile\"; fi; w=$(echo \"$out\" | grep -ic \"warning:\"); e=$(echo \"$out\" | grep -ic \"error:\"); if [ $bexit -eq 0 ]; then bs=\"✓ Success\"; bc=\"32\"; else bs=\"✗ Failed\"; bc=\"31\"; fi; fnL \"$bs in $(fnT $bms)\" \"$bc\"; fnH \"BUILD REPORT\"; fnR \"Source\" \"${file}\"; loc=$(wc -l < \"${file}\"); fnR \"Lines of Code\" \"$loc\"; fnR \"Timestamp\" \"$(date +'%Y-%m-%d %H:%M:%S')\"; fnR \"Compiler\" \"$c\"; fnR \"Target\" \"x64\"; fnR \"Build\" \"$bs\" \"$bc\"; if [ $w -gt 0 ]; then wc=\"33\"; else wc=\"0\"; fi; fnR \"Warnings\" \"$w\" \"$wc\"; if [ $e -gt 0 ]; then ec=\"31\"; else ec=\"0\"; fi; fnR \"Errors\" \"$e\" \"$ec\"; if [ -f \"$exe\" ]; then sz=$(du -h \"$exe\" | cut -f1); fnR \"Size\" \"$sz\"; fi; fnR \"Build Time\" \"$(fnT $bms)\"; fnR \"Log File\" \"$logFile\" \"90\"; if [ $bexit -ne 0 ]; then exit 1; fi; fnH \"RUN\" true false; rstart_t=$(date +%s%3N); \"$exe\"; rexit=$?; rend_t=$(date +%s%3N); rms=$((rend_t - rstart_t)); fnH \"EXECUTION REPORT\"; if [ $rexit -eq 0 ]; then rc=\"32\"; else rc=\"31\"; fi; fnR \"Exit Code\" \"$rexit\" \"$rc\"; fnR \"Runtime\" \"$(fnT $rms)\"; rm -f \"$exe\"; fnR \"Executable\" \"Removed\"; fnH \"SOURCE CODE\" false true; cat \"${file}\" >> \"$logFile\"; exit 0",
+ "command": "if [ \"${fileExtname}\" = \".cpp\" ]; then c=\"g++\"; else c=\"gcc\"; fi; exe=\"${fileDirname}/${fileBasenameNoExtension}\"; logDir=\"/home/notamitgamer/Documents/bsc/buildLog\"; mkdir -p \"$logDir\"; ts=$(date +\"%Y-%m-%d_%H-%m-%M_%S\"); logFile=\"$logDir/buildLog_$ts.txt\"; strip() { sed -r 's/\\x1B\\[([0-9]{1,3}(;[0-9]{1,3})*)?[mGK]//g'; }; log() { echo -e \"$1\"; echo -e \"$1\" | strip >> \"$logFile\"; }; fnT() { if [ $1 -ge 1000 ]; then echo \"$(($1/1000)).$(( ($1%1000)/100 ))s\"; else echo \"${1}ms\"; fi; }; ver=$($c --version | head -n 1); loc=$(wc -l < \"${file}\"); log \"\\e[90m$(date +'%Y-%m-%d %H:%M:%S') · ${loc} lines · $ver\\e[0m\"; log \"\\e[36m▶\\e[0m Building \\e[1m${fileBasename}\\e[0m \\e[90m($c)\\e[0m\"; start_t=$(date +%s%3N); out=$($c -fdiagnostics-color=always -g \"${file}\" -o \"$exe\" 2>&1); bexit=$?; end_t=$(date +%s%3N); bms=$((end_t - start_t)); if [ -n \"$out\" ]; then log \"$out\"; fi; w=$(echo \"$out\" | grep -ic \"warning:\"); e=$(echo \"$out\" | grep -ic \"error:\"); if [ $bexit -eq 0 ]; then sz=$(du -h \"$exe\" 2>/dev/null | cut -f1); log \"\\e[32m✓ build ok\\e[0m \\e[90min $(fnT $bms) · $w warn · $sz\\e[0m\"; else log \"\\e[31m✗ build failed\\e[0m \\e[90min $(fnT $bms) · $e error(s) · $w warn\\e[0m\"; log \"\\e[90mlog: $logFile\\e[0m\"; exit 1; fi; log \"\"; log \"\\e[36m▶\\e[0m Running \\e[1m${fileBasenameNoExtension}\\e[0m\"; log \"\\e[90m──────────────────────────────────────────\\e[0m\"; rstart_t=$(date +%s%3N); \"$exe\" 2>&1 | tee >(strip >> \"$logFile\"); rexit=${PIPESTATUS[0]}; rend_t=$(date +%s%3N); rms=$((rend_t - rstart_t)); log \"\\e[90m──────────────────────────────────────────\\e[0m\"; rm -f \"$exe\"; if [ $rexit -eq 0 ]; then rc=\"32\"; else rc=\"31\"; fi; log \"\\e[${rc}m■ exit $rexit\\e[0m \\e[90min $(fnT $rms)\\e[0m\"; log \"\\e[90mlog: $logFile\\e[0m\"; { echo \"\"; echo \"────── SOURCE ──────\"; cat \"${file}\"; } >> \"$logFile\"; exit 0",
"args": [],
"options": {
"cwd": "${fileDirname}",
@@ -56,7 +56,7 @@
"showReuseMessage": true,
"clear": true
},
- "detail": "Builds, runs, dynamic time, full logging, one-click close, flush top"
+ "detail": "Builds, runs, compact status lines, full logging preserved"
}
]
}
\ No newline at end of file
diff --git a/semester_2/assignments/assignment_01.cpp b/semester_2/assignments/assignment_01.cpp
@@ -0,0 +1,150 @@
+#include <iostream>
+
+using namespace std;
+
+class Matrix
+{
+private:
+ int n, *arr;
+
+public:
+ Matrix(int size)
+ {
+ n = size;
+ arr = new int[n * (n + 1) / 2];
+ }
+
+ void setDiagonal(int i, int j, int x)
+ {
+ if (i == j)
+ arr[i] = x;
+ }
+ void setLowerTri(int i, int j, int x)
+ {
+ if (i >= j)
+ arr[i * (i + 1) / 2 + j] = x;
+ }
+ void setUpperTri(int i, int j, int x)
+ {
+ if (i <= j)
+ arr[n * i - (i * (i - 1) / 2) + (j - i)] = x;
+ }
+ void setSymmetric(int i, int j, int x)
+ {
+ (i >= j) ? arr[i * (i + 1) / 2 + j] = x : arr[j * (j + 1) / 2 + i] = x;
+ }
+
+ int getDiagonal(int i, int j)
+ {
+ return (i == j) ? arr[i] : 0;
+ }
+ int getLowerTri(int i, int j)
+ {
+ return (i >= j) ? arr[i * (i + 1) / 2 + j] : 0;
+ }
+ int getUpperTri(int i, int j)
+ {
+ return (i <= j) ? arr[n * i - i * (i - 1) / 2 + (j - i)] : 0;
+ }
+ int getSymmetric(int i, int j)
+ {
+ return (i >= j) ? arr[i * (i + 1) / 2 + j] : arr[j * (j + 1) / 2 + i];
+ }
+
+ void display(int type)
+ {
+ cout << endl
+ << "Matrix:" << endl;
+ for (int i = 0; i < n; i++)
+ {
+ for (int j = 0; j < n; j++)
+ {
+ if (type == 1)
+ cout << getDiagonal(i, j) << " ";
+ else if (type == 2)
+ cout << getLowerTri(i, j) << " ";
+ else if (type == 3)
+ cout << getUpperTri(i, j) << " ";
+ else if (type == 4)
+ cout << getSymmetric(i, j) << " ";
+ }
+ cout << endl;
+ }
+ }
+
+ ~Matrix()
+ {
+ delete[] arr;
+ }
+};
+
+int main()
+{
+ int n, choice, x;
+ cout << "Enter the order of the matrix : ";
+ cin >> n;
+ Matrix M(n);
+
+ cout << "\n1. Diagonal Matrix.";
+ cout << "\n2. Lower Triangular Matrix.";
+ cout << "\n3. Upper Triangular Matrix.";
+ cout << "\n4. Symmetric Matrix.";
+ cout << "\nEnter your choice : ";
+ cin >> choice;
+
+ switch (choice)
+ {
+ case 1:
+ cout << "\nEnter the diagonal elements : ";
+ for (int i = 0; i < n; i++)
+ {
+ cin >> x;
+ M.setDiagonal(i, i, x);
+ }
+ M.display(1);
+ break;
+
+ case 2:
+ cout << "\nEnter the elements : ";
+ for (int i = 0; i < n; i++)
+ {
+ for (int j = 0; j <= i; j++)
+ {
+ cin >> x;
+ M.setLowerTri(i, j, x);
+ }
+ }
+ M.display(2);
+ break;
+
+ case 3:
+ cout << "\nEnter the elements : ";
+ for (int i = 0; i < n; i++)
+ {
+ for (int j = i; j < n; j++)
+ {
+ cin >> x;
+ M.setUpperTri(i, j, x);
+ }
+ }
+ M.display(3);
+ break;
+
+ case 4:
+ cout << "\nEnter the elements : ";
+ for (int i = 0; i < n; i++)
+ {
+ for (int j = 0; j <= i; j++)
+ {
+ cin >> x;
+ M.setSymmetric(i, j, x);
+ }
+ }
+ M.display(4);
+ break;
+
+ default:
+ cout << "Invalid Choice.";
+ }
+ return 0;
+}+
\ No newline at end of file
diff --git a/semester_2/assignments/assignments.odt b/semester_2/assignments/assignments.odt
Binary files differ.
diff --git a/semester_2/assignments/assignments.pdf b/semester_2/assignments/assignments.pdf
Binary files differ.