consolidate all repos to one for archive

This commit is contained in:
2025-01-28 13:46:42 +01:00
commit a6610fbc7a
5350 changed files with 2705721 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
//
// Created by Nik on 10/04/2022.
//
#include "Canvas.h"
void Canvas::addShape(Shape2D *s) {
shapes.push_back(s);
}
void Canvas::print() const {
for (auto shape: shapes) {
shape->draw();
}
}
unsigned int Canvas::getTotalArea() const {
unsigned int res = 0;
for (auto shape: shapes) {
res += shape->getSurfaceArea();
}
return res;
}

View File

@@ -0,0 +1,24 @@
//
// Created by Nik on 10/04/2022.
//
#ifndef NALOGA0601_CANVAS_H
#define NALOGA0601_CANVAS_H
#include "Shape2D.h"
#include "Triangle.h"
#include "Rectangle.h"
#include "Diamand.h"
#include <vector>
class Canvas {
private:
std::vector<Shape2D*> shapes;
public:
void addShape(Shape2D *s);
void print() const;
unsigned int getTotalArea() const;
};
#endif //NALOGA0601_CANVAS_H

View File

@@ -0,0 +1,15 @@
//
// Created by Nik on 10/04/2022.
//
#ifndef NALOGA0601_COLORCODE_H
#define NALOGA0601_COLORCODE_H
enum ColorCode{
Red = 31,
Green = 32,
Blue = 34,
Default = 39
};
#endif //NALOGA0601_COLORCODE_H

View File

@@ -0,0 +1,66 @@
//
// Created by Nik on 11/04/2022.
//
#include "Diamand.h"
Diamand::Diamand(ColorCode color, unsigned int redius): Shape2D(color), redius(redius) {}
unsigned int Diamand::getSurfaceArea() const {
return (redius*2+2)*2;
}
void Diamand::draw() const {
int spacL1 = redius;
int specR1 = 0;
int spacL2 = 0;
int specR2 = redius * 2;
for (int i = 0; i < redius * 2 + 2; i++) {
if (i <= redius) {
for (int j = 0; j < spacL1; j++) std::cout << " ";
PrintUtility::print(color, "*");
for (int k = 0; k < specR1; k++) std::cout << " ";
PrintUtility::print(color, "*");
std::cout << "\n";
specR1 += 2;
spacL1 -= 1;
}
if (i > redius) {
for (int j = 0; j < spacL2; j++) std::cout << " ";
PrintUtility::print(color, "*");
for (int k = 0; k < specR2; k++) std::cout << " ";
PrintUtility::print(color, "*");
std::cout << "\n";
specR2 -= 2;
spacL2 += 1;
}
}
}
std::string Diamand::getString() const {
std::string ret;
int spacL1 = redius;
int specR1 = 0;
int spacL2 = 0;
int specR2 = redius * 2;
for (int i = 0; i < redius * 2 + 2; i++) {
if (i <= redius) {
for (int j = 0; j < spacL1; j++) ret+=" ";
ret+="*";
for (int k = 0; k < specR1; k++) ret+=" ";
ret+="*\n";
specR1 += 2;
spacL1 -= 1;
}
if (i > redius) {
for (int j = 0; j < spacL2; j++) ret+=" ";
ret+="*";
for (int k = 0; k < specR2; k++) ret+=" ";
ret+="*\n";
specR2 -= 2;
spacL2 += 1;
}
}
return ret;
}

View File

@@ -0,0 +1,24 @@
//
// Created by Nik on 11/04/2022.
//
#ifndef NALOGA0601_DIAMAND_H
#define NALOGA0601_DIAMAND_H
#include "Shape2D.h"
class Diamand : public Shape2D{
private:
unsigned int redius;
public:
Diamand(ColorCode color, unsigned int redius);
unsigned int getSurfaceArea() const override;
void draw() const override;
std::string getString() const;
};
#endif //NALOGA0601_DIAMAND_H

View File

@@ -0,0 +1,14 @@
//
// Created by Dragana on 31. 03. 2022.
//
#include "PrintUtility.h"
void PrintUtility::print(const ColorCode &color, const std::string& str) {
std::cout << "\033[" << (int)color << "m" << str << "\033[0m";
}
void PrintUtility::print(const ColorCode &color, unsigned int n) {
for(int i = 0; i < n; i++)
print(color, " *");
}

View File

@@ -0,0 +1,21 @@
//
// Created by Dragana on 31. 03. 2022.
//
#ifndef TASK0601_PRINTUTILITY_H
#define TASK0601_PRINTUTILITY_H
#include <string>
#include <iostream>
#include "ColorCode.h"
class PrintUtility {
private:
PrintUtility() = default;
public:
static void print(const ColorCode &color, const std::string& str);
static void print(const ColorCode &color, unsigned int n);
};
#endif //TASK0601_PRINTUTILITY_H

View File

@@ -0,0 +1,56 @@
Napišite enum razred ColorCode, ki ima vrednost:
Red = 31,
Green = 32,
Blue = 34
Default = 39
Priložen imate razed PrintUtility, ki ga vključite v svoj projekt, saj ga boste pri tej nalogi uporabili. Le-ta nam bo omogočil, da izpisujemo lahko barvno besedilo v konzoli. Vendar, da bo to delovalo, je potrebno na začetek funkcije main dodati vrstico:
system(("chcp "s + std::to_string(65001)).c_str());.
Lahko se zgodi, da v primeru uporabe kakšnega drugega programa (kaj drugega kot CLion) ta funkcionalnost ne bo delala.
Napišite razred Shape2D, ki ima:
instančno spremenljivko color (tip ColorCode),
konstruktor z 1 parametrom,
abstraktno metodo getSurfaceArea in
abstraktno metodo draw.
Napišite razred Rectangle, ki deduje iz razreda Shape2D in ima:
dodatni instančni spremenljivki width in height,
konstruktor s 3 parametri,
implementirani metodi getSurfaceArea in draw,
metodo toString.
Z metodo getSurfaceArea želimo dobiti vrednost ploščine lika.
V metodi draw je pričakovano, da izrišemo lik (lahko s pomočjo zvezdic).
Napišite razred Canvas, ki ima:
instančno spremenljivko shapes (tip vector<Shape2D*>),
metodo addShape, ki doda lik v shapes, in
metodo print, ki izriše vse like.
Dodajte še sami eni razred, ki bo dedoval iz razreda Shape2D.
V glavnem programu ustvarite en objekt tipa Canvas in ga napolnite z vsaj 5 liki.
Za nalogo narišite UML diagram. Lahko na list papirja, vendar ga je treba slikati ali skenirati in tudi oddati na eštudij. Lahko pa ga ustvarite s pomočjo https://app.diagrams.net/ ali s podobno aplikacijo.
Pri reševanju naloge upoštevajte vso dosedaj pridobljeno znanje (uporaba inicializacijskega seznama, konstantne metode, zapišite si metode get/set tam, kjer jih potrebujete itd.).
Primer izpisa glavnega programa.
int main() {
system(("chcp "s + std::to_string(65001)).c_str());
Canvas c;
c.addShape(new Rectangle(ColorCode(ColorCode::Green), 5, 2));
c.addShape(new Rectangle(ColorCode(ColorCode::Blue), 10, 5));
c.print();
return 0;
}
Uporabi:
PrintUtility.cpp
PrintUtility.h

View File

@@ -0,0 +1,36 @@
//
// Created by Nik on 10/04/2022.
//
#include "Rectangle.h"
#include <cmath>
Rectangle::Rectangle(ColorCode color, unsigned int width, unsigned int height) :
Shape2D(color), width(width), height(height) {}
Rectangle::Rectangle(ColorCode color, unsigned int size) :
Shape2D(color), width(size), height(size) {}
unsigned int Rectangle::getSurfaceArea() const {
return width * height;
}
void Rectangle::draw() const {
for (int i = 0; i < height; i++) {
PrintUtility::print(color, width);
std::cout << "\n";
}
std::cout << "\n";
}
std::string Rectangle::getString() const {
std::string ret;
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) ret += " *";
ret += "\n";
}
ret += "\n";
return ret;
}

View File

@@ -0,0 +1,24 @@
//
// Created by Nik on 10/04/2022.
//
#ifndef NALOGA0601_RECTANGLE_H
#define NALOGA0601_RECTANGLE_H
#include "Shape2D.h"
class Rectangle : public Shape2D{
private:
unsigned int width, height;
public:
Rectangle(ColorCode color, unsigned int width, unsigned int height);
Rectangle(ColorCode color, unsigned int size);
unsigned int getSurfaceArea() const override;
void draw() const override;
std::string getString() const;
};
#endif //NALOGA0601_RECTANGLE_H

View File

@@ -0,0 +1,8 @@
//
// Created by Nik on 10/04/2022.
//
#include "Shape2D.h"
Shape2D::Shape2D(ColorCode color) : color(color){}

View File

@@ -0,0 +1,20 @@
//
// Created by Nik on 10/04/2022.
//
#ifndef NALOGA0601_SHAPE2D_H
#define NALOGA0601_SHAPE2D_H
#include "PrintUtility.h"
class Shape2D {
protected:
ColorCode color;
public:
Shape2D(ColorCode color);
virtual unsigned int getSurfaceArea() const = 0;
virtual void draw() const = 0;
};
#endif //NALOGA0601_SHAPE2D_H

View File

@@ -0,0 +1,40 @@
//
// Created by Nik on 10/04/2022.
//
#include "Triangle.h"
Triangle::Triangle(ColorCode color, unsigned int width) :
Shape2D(color), width(width) {}
unsigned int Triangle::getSurfaceArea() const {
unsigned int res = 0;
unsigned int rec = 1;
for (int i = 0; i < width; i++) {
res += rec;
rec++;
}
return res;
}
void Triangle::draw() const {
unsigned int rec = 1;
for (int i = 0; i < width; i++) {
for (int j = 0; j < rec; j++) PrintUtility::print(color," *");
rec++;
std::cout << "\n";
}
std::cout << "\n";
}
std::string Triangle::getString() const {
std::string ret;
unsigned int rec = 1;
for (int i = 0; i < width; i++) {
for (int j = 0; j < rec; j++) ret += " *";
rec++;
ret += "\n";
}
ret += "\n";
return ret;
}

View File

@@ -0,0 +1,24 @@
//
// Created by Nik on 10/04/2022.
//
#ifndef NALOGA0601_TRIANGLE_H
#define NALOGA0601_TRIANGLE_H
#include "Shape2D.h"
class Triangle : public Shape2D {
private:
unsigned int width;
public:
Triangle(ColorCode color, unsigned int width);
unsigned int getSurfaceArea() const override;
void draw() const override;
std::string getString() const;
};
#endif //NALOGA0601_TRIANGLE_H

View File

@@ -0,0 +1,21 @@
#include "Canvas.h"
int main() {
system(("chcp " + std::to_string(65001)).c_str());
std::cout << "Hello, World!" << std::endl;
Canvas can;
Rectangle j(ColorCode::Blue,5,6);
can.addShape(&j);
Rectangle k(ColorCode::Red,5);
can.addShape(&k);
Triangle i(ColorCode::Green, 5);
can.addShape(&i);
Diamand l(ColorCode::Blue, 4);
can.addShape(&l);
can.print();
std::cout << can.getTotalArea();
return 0;
}

View File

@@ -0,0 +1 @@
<mxfile host="app.diagrams.net" modified="2022-04-14T06:28:42.997Z" agent="5.0 (Windows)" etag="ckywBa6jElGthrhaOjmi" version="17.4.4" type="device"><diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">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</diagram></mxfile>