consolidate all repos to one for archive
This commit is contained in:
23
semester_2/programiranje_2/naloga0601/Canvas.cpp
Normal file
23
semester_2/programiranje_2/naloga0601/Canvas.cpp
Normal 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;
|
||||
}
|
24
semester_2/programiranje_2/naloga0601/Canvas.h
Normal file
24
semester_2/programiranje_2/naloga0601/Canvas.h
Normal 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
|
15
semester_2/programiranje_2/naloga0601/ColorCode.h
Normal file
15
semester_2/programiranje_2/naloga0601/ColorCode.h
Normal 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
|
66
semester_2/programiranje_2/naloga0601/Diamand.cpp
Normal file
66
semester_2/programiranje_2/naloga0601/Diamand.cpp
Normal 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;
|
||||
}
|
24
semester_2/programiranje_2/naloga0601/Diamand.h
Normal file
24
semester_2/programiranje_2/naloga0601/Diamand.h
Normal 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
|
14
semester_2/programiranje_2/naloga0601/PrintUtility.cpp
Normal file
14
semester_2/programiranje_2/naloga0601/PrintUtility.cpp
Normal 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, " *");
|
||||
}
|
21
semester_2/programiranje_2/naloga0601/PrintUtility.h
Normal file
21
semester_2/programiranje_2/naloga0601/PrintUtility.h
Normal 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
|
56
semester_2/programiranje_2/naloga0601/README.md
Normal file
56
semester_2/programiranje_2/naloga0601/README.md
Normal 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
|
36
semester_2/programiranje_2/naloga0601/Rectangle.cpp
Normal file
36
semester_2/programiranje_2/naloga0601/Rectangle.cpp
Normal 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;
|
||||
}
|
||||
|
||||
|
24
semester_2/programiranje_2/naloga0601/Rectangle.h
Normal file
24
semester_2/programiranje_2/naloga0601/Rectangle.h
Normal 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
|
8
semester_2/programiranje_2/naloga0601/Shape2D.cpp
Normal file
8
semester_2/programiranje_2/naloga0601/Shape2D.cpp
Normal file
@@ -0,0 +1,8 @@
|
||||
//
|
||||
// Created by Nik on 10/04/2022.
|
||||
//
|
||||
|
||||
#include "Shape2D.h"
|
||||
|
||||
Shape2D::Shape2D(ColorCode color) : color(color){}
|
||||
|
20
semester_2/programiranje_2/naloga0601/Shape2D.h
Normal file
20
semester_2/programiranje_2/naloga0601/Shape2D.h
Normal 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
|
40
semester_2/programiranje_2/naloga0601/Triangle.cpp
Normal file
40
semester_2/programiranje_2/naloga0601/Triangle.cpp
Normal 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;
|
||||
}
|
24
semester_2/programiranje_2/naloga0601/Triangle.h
Normal file
24
semester_2/programiranje_2/naloga0601/Triangle.h
Normal 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
|
21
semester_2/programiranje_2/naloga0601/naloga0601.cpp
Normal file
21
semester_2/programiranje_2/naloga0601/naloga0601.cpp
Normal 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;
|
||||
}
|
1
semester_2/programiranje_2/naloga0601/naloga0601.drawio
Normal file
1
semester_2/programiranje_2/naloga0601/naloga0601.drawio
Normal 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>
|
Reference in New Issue
Block a user