consolidate all repos to one for archive
This commit is contained in:
35
semester_2/programiranje_2/naloga0701/README.md
Normal file
35
semester_2/programiranje_2/naloga0701/README.md
Normal file
@@ -0,0 +1,35 @@
|
||||
Izmislite si dva (izvirna) razreda (ni dovoljena uporaba razredov iz prejšnjih nalog in primerov iz predavanj). Vsak naj ima vsaj dve instančni spremenljivki, privzeti in nastavitveni konstruktor ter metodo toString.
|
||||
Ustvarite datoteko VectorUtil.h, kjer boste imeli več šablon fukcij. Datoteka naj vsebuje samo funkcije, brez razreda. Napišite (glej spodaj glavni program, vendar uporabite lastne razrede):
|
||||
Šablono funkcije fillDefault, ki prejme vektor kot argument in ga napolni z N (parameter šablone) objekti ( klic default konstruktorja).
|
||||
Šablono funkcije toString, ki prejme vektor kot argument in vse elemente s pomočjo metode toString združi v en string in ga vrne.
|
||||
Šablono funkcije print, ki prejme vektor kot argument in izpiše vse elemente z uporabo funkcije toString nad objekti.
|
||||
Šablono funkcije reverse, ki prejme vektor kot argument in vrne vektor z obratnim vrstnim redom (ni dovoljena uporaba knjižnic kot npr. std::reverse).
|
||||
Naredite specializacijo šablone funkcije fillDefault za en razred tako, da ne kličete privzetega konstruktorja, ampak nastavitveni konstruktor (naključno generirajte vrednosti).
|
||||
|
||||
Primer glavnega programa:
|
||||
|
||||
#include <vector>
|
||||
#include "ColorCode.h"
|
||||
#include "VectorUtil.h"
|
||||
#include "Point.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
int main() {
|
||||
vector<Point> list;
|
||||
cout << "Default generator of 40 objects" << endl;
|
||||
fillDefault<40>(list);
|
||||
|
||||
cout << "Prints by using toString function" << endl;
|
||||
print(list);
|
||||
cout << toString(list);
|
||||
|
||||
cout << "Return new list with Reversed order" << endl;
|
||||
vector<Point> list2 = reverse(list);
|
||||
print(list2);
|
||||
|
||||
vector<Grade> grades;
|
||||
fillDefault<12>(grades);
|
||||
print(grades);
|
||||
return 0;
|
||||
}
|
11
semester_2/programiranje_2/naloga0701/Racunalnik.cpp
Normal file
11
semester_2/programiranje_2/naloga0701/Racunalnik.cpp
Normal file
@@ -0,0 +1,11 @@
|
||||
//
|
||||
// Created by Nik on 22/04/2022.
|
||||
//
|
||||
|
||||
#include "Racunalnik.h"
|
||||
|
||||
Racunalnik::Racunalnik(int poraba, int volumen) : poraba(poraba), volumen(volumen) {}
|
||||
|
||||
std::string Racunalnik::toString() const {
|
||||
return "Poraba:" + std::to_string(poraba) + "W Volumen:" + std::to_string(volumen) + " \n";
|
||||
}
|
20
semester_2/programiranje_2/naloga0701/Racunalnik.h
Normal file
20
semester_2/programiranje_2/naloga0701/Racunalnik.h
Normal file
@@ -0,0 +1,20 @@
|
||||
//
|
||||
// Created by Nik on 22/04/2022.
|
||||
//
|
||||
|
||||
#ifndef NALOGA0701_RACUNALNIK_H
|
||||
#define NALOGA0701_RACUNALNIK_H
|
||||
#include <string>
|
||||
|
||||
class Racunalnik {
|
||||
private:
|
||||
int poraba = 600;
|
||||
int volumen = 7;
|
||||
public:
|
||||
Racunalnik() = default;
|
||||
Racunalnik(int poraba, int volumen);
|
||||
std::string toString() const;
|
||||
};
|
||||
|
||||
|
||||
#endif //NALOGA0701_RACUNALNIK_H
|
9
semester_2/programiranje_2/naloga0701/Telefon.cpp
Normal file
9
semester_2/programiranje_2/naloga0701/Telefon.cpp
Normal file
@@ -0,0 +1,9 @@
|
||||
#include "Telefon.h"
|
||||
|
||||
Telefon::Telefon(int size, int battery, int camera) : size(size), battery(battery), camera(camera) {}
|
||||
|
||||
|
||||
std::string Telefon::toString() const {
|
||||
//return "Diagonal size:" + std::to_string(size) + "Inc Battery size:" + std::to_string(battery) + "mHa Camera sensor:" + std::to_string(camera) + "MP \n";
|
||||
return std::to_string(size) + " " + std::to_string(battery) + " " + std::to_string(camera) + " \n";
|
||||
}
|
18
semester_2/programiranje_2/naloga0701/Telefon.h
Normal file
18
semester_2/programiranje_2/naloga0701/Telefon.h
Normal file
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// Created by Nik on 22/04/2022.
|
||||
//
|
||||
|
||||
#ifndef NALOGA0701_TELEFON_H
|
||||
#define NALOGA0701_TELEFON_H
|
||||
#include <string>
|
||||
|
||||
class Telefon {
|
||||
private:
|
||||
int size = 6, battery = 4000, camera = 8;
|
||||
public:
|
||||
Telefon(int size, int battery, int camera);
|
||||
std::string toString() const;
|
||||
};
|
||||
|
||||
|
||||
#endif //NALOGA0701_TELEFON_H
|
59
semester_2/programiranje_2/naloga0701/VectorUtil.h
Normal file
59
semester_2/programiranje_2/naloga0701/VectorUtil.h
Normal file
@@ -0,0 +1,59 @@
|
||||
#ifndef NALOGA0701_VECTORUTIL_H
|
||||
#define NALOGA0701_VECTORUTIL_H
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <cstdlib>
|
||||
#include <iostream>
|
||||
#include "Telefon.h"
|
||||
|
||||
template<int N, typename T>
|
||||
void fillDefault(std::vector<T> &vector) {
|
||||
for (int i = 0; i < N; ++i) {
|
||||
vector.push_back(T());
|
||||
}
|
||||
}
|
||||
|
||||
template<int N>
|
||||
void fillDefault(std::vector<Telefon> &vector) {
|
||||
for (int i = 0; i < N; ++i) {
|
||||
vector.push_back({rand() % 8 + 3, rand() % 3000 + 2000, rand() % 8 + 4});
|
||||
}
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
std::string toString(const std::vector<T> &vector) {
|
||||
std::string ret;
|
||||
for (int i = 0; i < vector.size(); ++i) {
|
||||
ret += vector[i].toString();
|
||||
}
|
||||
ret += "\n";
|
||||
return ret;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void print(const std::vector<T> &vector) {
|
||||
for (int i = 0; i < vector.size(); ++i) {
|
||||
std::cout << vector[i].toString();
|
||||
}
|
||||
std::cout << "\n";
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
std::vector<T> reverse(const std::vector<T> vector) {
|
||||
std::vector<T> ret;
|
||||
for (int i = vector.size(); i > 0; --i) {
|
||||
ret.push_back(vector[i - 1]);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
bool findInList(const std::vector<T> vector, T srch){
|
||||
for (int i = 0; i < vector.size(); ++i) {
|
||||
if(vector[i].toString() == srch.toString()) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif //NALOGA0701_VECTORUTIL_H
|
28
semester_2/programiranje_2/naloga0701/main.cpp
Normal file
28
semester_2/programiranje_2/naloga0701/main.cpp
Normal file
@@ -0,0 +1,28 @@
|
||||
#include "VectorUtil.h"
|
||||
#include "Telefon.h"
|
||||
#include "Racunalnik.h"
|
||||
int main() {
|
||||
std::vector<Telefon> telList;
|
||||
std::vector<Telefon> telRList;
|
||||
std::vector<Racunalnik> racList;
|
||||
fillDefault<6>(racList);
|
||||
std::cout << "--------------print Rac-------------------------------\n";
|
||||
print(racList);
|
||||
fillDefault<5>(telList);
|
||||
std::cout << "--------------print Tel-------------------------------\n";
|
||||
print(telList);
|
||||
std::cout << "--------------toString Tel-------------------------------\n";
|
||||
std::cout << toString(telList);
|
||||
std::cout << "--------------revers Tel-------------------------------\n";
|
||||
telRList = reverse(telList);
|
||||
print(telRList);
|
||||
std::cout << "--------------revers Tel-------------------------------\n";
|
||||
|
||||
Telefon t(4,3827,5);
|
||||
if(findInList(telList,t)){
|
||||
std::cout << "true";
|
||||
}else{
|
||||
std::cout << "false";
|
||||
}
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user