initial commit
This commit is contained in:
commit
45fd3d0f65
5
README
Normal file
5
README
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Miłosz Makowski
|
||||||
|
|
||||||
|
Zadania + info milosz.faculty.wmi.amu.edu.pl
|
||||||
|
|
||||||
|
Zaliczenie: Klokwium + projekt (2 języki)
|
9
logs/log1.txt
Normal file
9
logs/log1.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
cpp1
|
||||||
|
cpp2
|
||||||
|
ilovecpp
|
||||||
|
linuxoverwindows
|
||||||
|
123
|
||||||
|
456
|
||||||
|
789
|
||||||
|
abc
|
||||||
|
qwe
|
9
logs/log2.txt
Normal file
9
logs/log2.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
cpp1
|
||||||
|
cpp2
|
||||||
|
ilovecpp
|
||||||
|
linuxoverwindows
|
||||||
|
123
|
||||||
|
456
|
||||||
|
789
|
||||||
|
abc
|
||||||
|
qwe
|
16
zad1_1.py
Normal file
16
zad1_1.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
class Przedmiot():
|
||||||
|
def __init__(self, subject):
|
||||||
|
self.name=subject
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.name
|
||||||
|
|
||||||
|
subjects=[]
|
||||||
|
subjects.append(Przedmiot("Maths"))
|
||||||
|
subjects.append(Przedmiot("Physics"))
|
||||||
|
subjects.append(Przedmiot("PE"))
|
||||||
|
subjects.append(Przedmiot("Chemistry"))
|
||||||
|
subjects.append(Przedmiot("Computer Science"))
|
||||||
|
|
||||||
|
for subject in subjects:
|
||||||
|
print(subject)
|
25
zad1_2.py
Normal file
25
zad1_2.py
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
class Vector2D():
|
||||||
|
def __init__(self, xCoord, yCoord):
|
||||||
|
self.x=xCoord
|
||||||
|
self.y=yCoord
|
||||||
|
|
||||||
|
def add(self, vec):
|
||||||
|
return Vector2D(self.x+vec.x, self.y+vec.y)
|
||||||
|
|
||||||
|
def multiply(self, vec):
|
||||||
|
return (float(self.x*vec.x) + float(self.y*vec.y))
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return ("[" + str(self.x) + ", " + str(self.y) + "]")
|
||||||
|
|
||||||
|
# test data
|
||||||
|
|
||||||
|
vec1=Vector2D(-3, 1.4)
|
||||||
|
vec2=Vector2D(2, 2.7)
|
||||||
|
vec3=vec1.add(vec2)
|
||||||
|
|
||||||
|
vec4=vec1.multiply(vec2)
|
||||||
|
|
||||||
|
print(vec3)
|
||||||
|
print(vec4)
|
||||||
|
|
56
zad2_1.py
Normal file
56
zad2_1.py
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
class Produkt():
|
||||||
|
def __init__(self, id, name, price):
|
||||||
|
self.id=id
|
||||||
|
self.name=name
|
||||||
|
self.price=price
|
||||||
|
def __str__(self):
|
||||||
|
return str(self.id) + ' Nazwa: ' + self.name + '\n' + 'Cena: ' + str(self.price) + 'PLN'
|
||||||
|
|
||||||
|
class Koszyk():
|
||||||
|
def __init__(self, clientName):
|
||||||
|
self.clientName=clientName
|
||||||
|
self.due=0
|
||||||
|
self.products=[]
|
||||||
|
def dodajProdukt(self, produkt):
|
||||||
|
self.products.append(produkt)
|
||||||
|
self.due+=produkt.price
|
||||||
|
self.due=round(self.due, 2)
|
||||||
|
print('Dodano produkt do koszyka')
|
||||||
|
def lacznyKoszt(self):
|
||||||
|
return "Do zapłaty: " + str(self.due)
|
||||||
|
def __str__(self):
|
||||||
|
return ('Koszyk użytkownika ' + self.clientName +
|
||||||
|
'\nProdukty w koszyku:\n' +
|
||||||
|
'\n'.join(map(str, self.products)))
|
||||||
|
|
||||||
|
products=[Produkt(1, 'Jabłko', 3.19),
|
||||||
|
Produkt(2, 'Pomarańcza', 2.59),
|
||||||
|
Produkt(3, 'Banan', 5.99),
|
||||||
|
Produkt(4, 'Śliwka', 4.89)]
|
||||||
|
|
||||||
|
print("Wprowadź nazwę użytkownika: ", end='')
|
||||||
|
username=input()
|
||||||
|
koszyk=Koszyk(username)
|
||||||
|
print("Witaj " + username + "!")
|
||||||
|
print("Lista dostępnych produktów:")
|
||||||
|
for product in products:
|
||||||
|
print(product)
|
||||||
|
print("Aby dodać produkt do koszyka, wprowadź jego numer. Wpisz '0' aby zobaczyć zawartość swojego koszyka.")
|
||||||
|
while True:
|
||||||
|
while True:
|
||||||
|
choice=int(input())
|
||||||
|
if choice > len(products) or choice < 0:
|
||||||
|
print("Nie ma produktu o takim numerze.")
|
||||||
|
continue
|
||||||
|
elif choice==0:
|
||||||
|
print(koszyk)
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
koszyk.dodajProdukt(products[choice-1])
|
||||||
|
print(koszyk.lacznyKoszt())
|
||||||
|
print("Chcesz zakończyć zakupy i zapłacić? [Y/n]", end=' ')
|
||||||
|
wantExit=input()
|
||||||
|
if wantExit=='Y' or wantExit=='y':
|
||||||
|
print("Zapłacono " + str(koszyk.due) + '.')
|
||||||
|
print("Dziękujemy za zakupy!")
|
||||||
|
break
|
97
zad2_2.cpp
Normal file
97
zad2_2.cpp
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
class Produkt{
|
||||||
|
public:
|
||||||
|
float price;
|
||||||
|
Produkt(int iId, string iName, float iPrice){
|
||||||
|
id=iId;
|
||||||
|
name=iName;
|
||||||
|
price=iPrice;
|
||||||
|
}
|
||||||
|
string description(){
|
||||||
|
stringstream s;
|
||||||
|
s << id << " Nazwa: " << name << "\n" << "Cena: "
|
||||||
|
<< price << "PLN" << endl;
|
||||||
|
return s.str();
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
int id;
|
||||||
|
string name;
|
||||||
|
};
|
||||||
|
|
||||||
|
class Koszyk{
|
||||||
|
public:
|
||||||
|
float due;
|
||||||
|
Koszyk(string iClientName){
|
||||||
|
clientName=iClientName;
|
||||||
|
due=0;
|
||||||
|
}
|
||||||
|
void dodajProdukt(Produkt produkt){
|
||||||
|
products.push_back(produkt);
|
||||||
|
due+=produkt.price;
|
||||||
|
cout << "Dodano produkt do koszyka" << endl;
|
||||||
|
}
|
||||||
|
string lacznyKoszt(){
|
||||||
|
stringstream s;
|
||||||
|
s << "Do zapłaty: " << due << "PLN.\n";
|
||||||
|
return s.str();
|
||||||
|
}
|
||||||
|
string description(){
|
||||||
|
stringstream s;
|
||||||
|
s << "Koszyk użytkownika " << clientName << "\nProdukty w koszyku\n";
|
||||||
|
for(Produkt x : products)
|
||||||
|
s << x.description();
|
||||||
|
s << endl;
|
||||||
|
return s.str();
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
string clientName;
|
||||||
|
vector<Produkt> products;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
vector<Produkt*> products;
|
||||||
|
products.push_back(new Produkt(1, "Jabłko", 3.19));
|
||||||
|
products.push_back(new Produkt(2, "Pomarańcza", 2.59));
|
||||||
|
products.push_back(new Produkt(3, "Banan", 5.99));
|
||||||
|
products.push_back(new Produkt(4, "Śliwka", 4.89));
|
||||||
|
|
||||||
|
cout << "Wprowadź nazwę użytkownika: " << endl;
|
||||||
|
string username;
|
||||||
|
cin >> username;
|
||||||
|
Koszyk* koszyk = new Koszyk(username);
|
||||||
|
cout << "Witaj " << username << "!\n"
|
||||||
|
<< "Lista dostępnych produktów:\n";
|
||||||
|
for(Produkt *p : products)
|
||||||
|
cout << p->description();
|
||||||
|
cout << "Aby dodać produkt do koszyka, wprowadź jego numer. Wpisz '0' aby zobaczyć zawartość swojego koszyka.\n";
|
||||||
|
while(true){
|
||||||
|
while(true){
|
||||||
|
string choice;
|
||||||
|
cin >> choice;
|
||||||
|
int choiceNumber=stoi(choice, nullptr, 10);
|
||||||
|
if(choiceNumber > products.size()){
|
||||||
|
cout << "Nie ma produktu o takim numerze.\n";
|
||||||
|
continue;
|
||||||
|
} else if(choiceNumber==0){
|
||||||
|
cout << koszyk->description();
|
||||||
|
break;
|
||||||
|
} else
|
||||||
|
koszyk->dodajProdukt(*products[choiceNumber-1]);
|
||||||
|
}
|
||||||
|
cout << koszyk->lacznyKoszt() << "\nChcesz zakończyć zakupy i zapłacić? [Y/n]\n";
|
||||||
|
string wantExit;
|
||||||
|
cin >> wantExit;
|
||||||
|
if(wantExit[0]=='Y' || wantExit[0]=='y'){
|
||||||
|
cout << "Zapłacono " << koszyk->due << ".\nDziękujemy za zakupy!";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
66
zad3_1.cpp
Normal file
66
zad3_1.cpp
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include <fstream>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
class Logger{
|
||||||
|
public:
|
||||||
|
virtual void log(string textToLog)=0;
|
||||||
|
virtual void del(){};
|
||||||
|
|
||||||
|
vector<string> history;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void history_add(string textToLog){
|
||||||
|
history.push_back(textToLog);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class FileLogger : public Logger{
|
||||||
|
public:
|
||||||
|
FileLogger(string filePath){
|
||||||
|
logFile.open(filePath);
|
||||||
|
}
|
||||||
|
void log(string textToLog){
|
||||||
|
history_add(textToLog);
|
||||||
|
logFile << textToLog << "\n";
|
||||||
|
}
|
||||||
|
void del(){
|
||||||
|
logFile.close();
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
ofstream logFile;
|
||||||
|
};
|
||||||
|
|
||||||
|
class StdoutLogger : public Logger{
|
||||||
|
public:
|
||||||
|
void log(string textToLog){
|
||||||
|
history_add(textToLog);
|
||||||
|
cout << textToLog << "\n";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void saveLogs(vector<Logger*> &logs, string text){
|
||||||
|
for(Logger* l : logs)
|
||||||
|
l->log(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
void stopLogging(vector<Logger*> &logs){
|
||||||
|
for(Logger* l : logs)
|
||||||
|
l->del();
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void){
|
||||||
|
vector<Logger*> logs={new FileLogger("/home/marcin/Documents/Coding/POB_2019/logs/log1.txt"),
|
||||||
|
new FileLogger("/home/marcin/Documents/Coding/POB_2019/logs/log2.txt"),
|
||||||
|
new StdoutLogger()};
|
||||||
|
vector<string> texts={"cpp1", "cpp2", "ilovecpp", "linuxoverwindows"};
|
||||||
|
for(string text : texts)
|
||||||
|
saveLogs(logs, text);
|
||||||
|
stopLogging(logs);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
50
zad3_1.py
Normal file
50
zad3_1.py
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
import os
|
||||||
|
|
||||||
|
class Logger():
|
||||||
|
def __init__(self):
|
||||||
|
self.history=[]
|
||||||
|
def history_add(self, textToLog):
|
||||||
|
self.history.append(textToLog)
|
||||||
|
def log(self, textToLog):
|
||||||
|
self.history_add(textToLog)
|
||||||
|
def __del__(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
class FileLogger(Logger):
|
||||||
|
def __init__(self, filePath):
|
||||||
|
self.history=[]
|
||||||
|
self.logFile=open(filePath, "a+")
|
||||||
|
def log(self, textToLog):
|
||||||
|
self.history_add(textToLog)
|
||||||
|
self.logFile.write(textToLog + "\n")
|
||||||
|
def __del__(self):
|
||||||
|
self.logFile.close()
|
||||||
|
|
||||||
|
class StdoutLogger(Logger):
|
||||||
|
def log(self, textToLog):
|
||||||
|
self.history_add(textToLog)
|
||||||
|
print(textToLog)
|
||||||
|
|
||||||
|
|
||||||
|
def saveLogs(loggers, text):
|
||||||
|
for log in loggers:
|
||||||
|
log.log(text)
|
||||||
|
|
||||||
|
def stopLogging(loggers):
|
||||||
|
for log in loggers:
|
||||||
|
del log
|
||||||
|
|
||||||
|
|
||||||
|
dir=os.path.join(os.path.dirname(__file__), "logs")
|
||||||
|
|
||||||
|
loggers=[StdoutLogger(),
|
||||||
|
FileLogger(os.path.join(dir, "log1.txt")),
|
||||||
|
FileLogger(os.path.join(dir, "log2.txt"))]
|
||||||
|
|
||||||
|
texts=["123", "456", "789",
|
||||||
|
"abc", "qwe"]
|
||||||
|
|
||||||
|
for line in texts:
|
||||||
|
saveLogs(loggers, line)
|
||||||
|
|
||||||
|
stopLogging(loggers)
|
128
zad5_1.cpp
Normal file
128
zad5_1.cpp
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include <set>
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
class Person;
|
||||||
|
class Vehicle;
|
||||||
|
|
||||||
|
class Entity {
|
||||||
|
private:
|
||||||
|
static int nextId;
|
||||||
|
protected:
|
||||||
|
static vector<Entity*> entities;
|
||||||
|
int id;
|
||||||
|
public:
|
||||||
|
Entity(){
|
||||||
|
id=nextId++;
|
||||||
|
entities.push_back(this);
|
||||||
|
}
|
||||||
|
static Entity* getEntityById(int _id){
|
||||||
|
for(Entity *entity : entities){
|
||||||
|
if (entity->id==_id)
|
||||||
|
return entity;
|
||||||
|
}
|
||||||
|
cout << "Could not find any entity with id " << _id << ".\n";
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
int getId(){
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
virtual ~Entity(){
|
||||||
|
for(unsigned int i=0; i<=entities.size(); i++){
|
||||||
|
if (entities[i]->id==id)
|
||||||
|
entities.erase(entities.begin()+i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
int Entity::nextId=0;
|
||||||
|
vector <Entity*> Entity::entities;
|
||||||
|
|
||||||
|
class Vehicle : public Entity {
|
||||||
|
friend class Person;
|
||||||
|
private:
|
||||||
|
set<int> idsInside;
|
||||||
|
const short unsigned int limit=5;
|
||||||
|
public:
|
||||||
|
void addPerson(Person &person);
|
||||||
|
int occupiedSpaces(){
|
||||||
|
return idsInside.size();
|
||||||
|
}
|
||||||
|
void whoIsInside(){
|
||||||
|
cout << "People inside car " << id << ":\n";
|
||||||
|
if(idsInside.size()==0)
|
||||||
|
return;
|
||||||
|
for(int pid : idsInside){
|
||||||
|
cout << pid << endl;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
virtual ~Vehicle();
|
||||||
|
};
|
||||||
|
|
||||||
|
class Person : public Entity {
|
||||||
|
friend class Vehicle;
|
||||||
|
private:
|
||||||
|
int vehicleId;
|
||||||
|
bool isInVehicle;
|
||||||
|
public:
|
||||||
|
Person(){
|
||||||
|
vehicleId=-1;
|
||||||
|
isInVehicle=false;
|
||||||
|
}
|
||||||
|
void getOut(){
|
||||||
|
if(vehicleId==-1){
|
||||||
|
cout << "This person is not inside any vehicle.\n";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Vehicle* vehicle=(Vehicle*)getEntityById(vehicleId);
|
||||||
|
vehicle->idsInside.erase(vehicle->idsInside.find(id));
|
||||||
|
vehicleId=-1;
|
||||||
|
isInVehicle=false;
|
||||||
|
}
|
||||||
|
virtual ~Person(){
|
||||||
|
getOut();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void Vehicle::addPerson(Person &person){
|
||||||
|
if(idsInside.size()>=limit) {
|
||||||
|
cout << "This vehicle has no more room for another passenger.\n";
|
||||||
|
return;
|
||||||
|
} else if (person.isInVehicle==true){
|
||||||
|
cout << "The person is alredy in some other vehicle.\n";
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
idsInside.insert(person.getId());
|
||||||
|
person.isInVehicle=true;
|
||||||
|
person.vehicleId=id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Vehicle::~Vehicle(){
|
||||||
|
for(int id : idsInside){
|
||||||
|
Person* personInside=(Person*)getEntityById(id);
|
||||||
|
personInside->getOut();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
vector<Person*> people;
|
||||||
|
for(int i=0; i<10; i++)
|
||||||
|
people.push_back(new Person);
|
||||||
|
Vehicle* car1=new Vehicle();
|
||||||
|
for(Person *newguy : people)
|
||||||
|
car1->addPerson(*newguy);
|
||||||
|
delete people[0];
|
||||||
|
people.erase(people.begin());
|
||||||
|
car1->whoIsInside();
|
||||||
|
delete car1;
|
||||||
|
Vehicle* car2=new Vehicle();
|
||||||
|
for(Person *newguy : people)
|
||||||
|
car2->addPerson(*newguy);
|
||||||
|
car2->whoIsInside();
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user