From fc968298043ed82cb38d6a0974748dde9ac438fd Mon Sep 17 00:00:00 2001 From: Borislav25Ivanov Date: Sun, 17 Mar 2024 22:56:07 +0200 Subject: [PATCH] added multiple task solutions --- .../Week 01/Solutions/borislavivanov/zad1.cpp | 47 +++++++ .../Week 01/Solutions/borislavivanov/zad2.cpp | 47 +++++++ .../Week 01/Solutions/borislavivanov/zad3.cpp | 126 ++++++++++++++++++ .../Solutions/borislavivanov/zad3/cards.h | 24 ++++ .../Solutions/borislavivanov/zad3/cards.txt | 52 ++++++++ .../Solutions/borislavivanov/zad3/player.cpp | 40 ++++++ .../Solutions/borislavivanov/zad3/player.h | 11 ++ .../Solutions/borislavivanov/zad3/result.txt | 55 ++++++++ .../Solutions/borislavivanov/zad3/zad3.cpp | 90 +++++++++++++ .../Week 01/Solutions/borislavivanov/zad4.cpp | 74 ++++++++++ .../Week 02/solutions/borislavivanov/text.txt | 1 + .../Week 02/solutions/borislavivanov/zad1.cpp | 0 .../solutions/borislavivanov/zad1_prakt.cpp | 29 ++++ .../solutions/borislavivanov/zad2_prakt.cpp | 26 ++++ .../borislavivanov/zad1_prakt/main.cpp | 16 +++ .../borislavivanov/zad1_prakt/point.cpp | 6 + .../borislavivanov/zad1_prakt/point.h | 8 ++ .../zad1_prakt/quadrilateral.cpp | 9 ++ .../borislavivanov/zad1_prakt/quadrilateral.h | 12 ++ .../borislavivanov/zad1_prakt/triangle.cpp | 8 ++ .../borislavivanov/zad1_prakt/triangle.h | 10 ++ .../borislavivanov/zad1prakt/farction.hpp | 23 ++++ .../borislavivanov/zad1prakt/fraction.cpp | 71 ++++++++++ .../borislavivanov/zad1prakt/main.cpp | 50 +++++++ .../borislavivanov/zad2prakt/main.cpp | 18 +++ .../borislavivanov/zad2prakt/student.cpp | 58 ++++++++ .../borislavivanov/zad2prakt/student.hpp | 26 ++++ .../borislavivanov/zad3prakt/class.cpp | 57 ++++++++ .../borislavivanov/zad3prakt/class.hpp | 21 +++ .../borislavivanov/zad3prakt/main.cpp | 55 ++++++++ .../borislavivanov/zad3prakt/student.cpp | 58 ++++++++ .../borislavivanov/zad3prakt/student.hpp | 25 ++++ .../borislavivanov/zad1Seminar/Complex.cpp | 46 +++++++ .../borislavivanov/zad1Seminar/complex.hpp | 30 +++++ .../borislavivanov/zad1Seminar/zad1.cpp | 30 +++++ .../borislavivanov/zad2Seminar/car.cpp | 31 +++++ .../borislavivanov/zad2Seminar/car.hpp | 19 +++ .../borislavivanov/zad2Seminar/main.cpp | 17 +++ 38 files changed, 1326 insertions(+) create mode 100644 Practicum/Week 01/Solutions/borislavivanov/zad1.cpp create mode 100644 Practicum/Week 01/Solutions/borislavivanov/zad2.cpp create mode 100644 Practicum/Week 01/Solutions/borislavivanov/zad3.cpp create mode 100644 Practicum/Week 01/Solutions/borislavivanov/zad3/cards.h create mode 100644 Practicum/Week 01/Solutions/borislavivanov/zad3/cards.txt create mode 100644 Practicum/Week 01/Solutions/borislavivanov/zad3/player.cpp create mode 100644 Practicum/Week 01/Solutions/borislavivanov/zad3/player.h create mode 100644 Practicum/Week 01/Solutions/borislavivanov/zad3/result.txt create mode 100644 Practicum/Week 01/Solutions/borislavivanov/zad3/zad3.cpp create mode 100644 Practicum/Week 01/Solutions/borislavivanov/zad4.cpp create mode 100644 Practicum/Week 02/solutions/borislavivanov/text.txt create mode 100644 Practicum/Week 02/solutions/borislavivanov/zad1.cpp create mode 100644 Practicum/Week 02/solutions/borislavivanov/zad1_prakt.cpp create mode 100644 Practicum/Week 02/solutions/borislavivanov/zad2_prakt.cpp create mode 100644 Practicum/Week 03/solutions/borislavivanov/zad1_prakt/main.cpp create mode 100644 Practicum/Week 03/solutions/borislavivanov/zad1_prakt/point.cpp create mode 100644 Practicum/Week 03/solutions/borislavivanov/zad1_prakt/point.h create mode 100644 Practicum/Week 03/solutions/borislavivanov/zad1_prakt/quadrilateral.cpp create mode 100644 Practicum/Week 03/solutions/borislavivanov/zad1_prakt/quadrilateral.h create mode 100644 Practicum/Week 03/solutions/borislavivanov/zad1_prakt/triangle.cpp create mode 100644 Practicum/Week 03/solutions/borislavivanov/zad1_prakt/triangle.h create mode 100644 Practicum/Week 04/solutions/borislavivanov/zad1prakt/farction.hpp create mode 100644 Practicum/Week 04/solutions/borislavivanov/zad1prakt/fraction.cpp create mode 100644 Practicum/Week 04/solutions/borislavivanov/zad1prakt/main.cpp create mode 100644 Practicum/Week 04/solutions/borislavivanov/zad2prakt/main.cpp create mode 100644 Practicum/Week 04/solutions/borislavivanov/zad2prakt/student.cpp create mode 100644 Practicum/Week 04/solutions/borislavivanov/zad2prakt/student.hpp create mode 100644 Practicum/Week 04/solutions/borislavivanov/zad3prakt/class.cpp create mode 100644 Practicum/Week 04/solutions/borislavivanov/zad3prakt/class.hpp create mode 100644 Practicum/Week 04/solutions/borislavivanov/zad3prakt/main.cpp create mode 100644 Practicum/Week 04/solutions/borislavivanov/zad3prakt/student.cpp create mode 100644 Practicum/Week 04/solutions/borislavivanov/zad3prakt/student.hpp create mode 100644 Seminar/Week 04/solution/borislavivanov/zad1Seminar/Complex.cpp create mode 100644 Seminar/Week 04/solution/borislavivanov/zad1Seminar/complex.hpp create mode 100644 Seminar/Week 04/solution/borislavivanov/zad1Seminar/zad1.cpp create mode 100644 Seminar/Week 04/solution/borislavivanov/zad2Seminar/car.cpp create mode 100644 Seminar/Week 04/solution/borislavivanov/zad2Seminar/car.hpp create mode 100644 Seminar/Week 04/solution/borislavivanov/zad2Seminar/main.cpp diff --git a/Practicum/Week 01/Solutions/borislavivanov/zad1.cpp b/Practicum/Week 01/Solutions/borislavivanov/zad1.cpp new file mode 100644 index 0000000..3c029ac --- /dev/null +++ b/Practicum/Week 01/Solutions/borislavivanov/zad1.cpp @@ -0,0 +1,47 @@ +#include +#include +const size_t inputLenght=41; +const size_t PlateNumLenght = 9; + + +enum Brands{ + mitsubishi, + mazda, + opel +}; +const char *brands[3] = { + "mitsubishi", + "mazda", + "opel" +}; +const char *colors[3] = { + "red", + "green", + "blue" +}; + +enum Colors{ + red, + green, + blue +}; + +struct car{ + Brands brand; + char PlateNum [PlateNumLenght]; + Colors color; +}; + +int main(){ + car newCar; + char input[inputLenght]; + std::cin.getline(input,inputLenght); + for(size_t i =0 ;i< sizeof(brands)/sizeof(char*);i++)if(!strcmp(input,brands[i]))newCar.brand = (Brands)i; + std::cin.getline(newCar.PlateNum,PlateNumLenght); + std::cin.getline(input,inputLenght); + for(size_t i =0 ;i< sizeof(colors)/sizeof(char*);i++)if(!strcmp(input,colors[i]))newCar.color = (Colors)i; + + std::cout<<"Brand "< +#include + +enum Suit{ + clubs, + spades, + diamonds, + hearts +}; + +enum Color{ + red, + black +}; + +const char * suits[] = { + "clubs", + "spades", + "diamonds", + "hearts" +}; + +const char * color[] = { + "red", + "black" +}; + +struct Card{ + Suit suit; + Color color; + char Honor; +}; + +int main(){ + const size_t inputLenght = 9; + char input[inputLenght]; + Card newCard; + std::cin.getline(input,inputLenght); + for(size_t i=0;i< sizeof(suits)/sizeof(char*);i++)if(!strcmp(input,suits[i]))newCard.suit = (Suit)i; + std::cin.getline(input,inputLenght); + for(size_t i=0;i< sizeof(color)/sizeof(char*);i++)if(!strcmp(input,color[i]))newCard.color = (Color)i; + std::cin.getline(input,inputLenght); + newCard.Honor = input[0]; + std::cout< +#include +#include + +int rangeRandomAlg2 (int min, int max){ + + // Get a random number + int random = min + (rand() % (max - min + 1)); + + // Print the random number + return random; +} + +struct Player{ + int hand[13] = {0,}; + int cardsInHand = 0; +}; + +enum Suit{ + CLUBS, + SPADES, + DIAMONDS, + HEARTS +}; + +enum Color{ + RED, + BLACK +}; + +const char * suits[] = { + "CLUBS", + "SPADES", + "DIAMONDS", + "HEARTS" +}; + +const char * color[] = { + "RED", + "BLACK" +}; + +struct Card{ + Suit suit; + Color color; + char Honor[2]; +}; + +void PrintHand(Player pl ,Card deck[],int cardsInDeck){ + + for(size_t i =0;i< pl.cardsInHand;i++){ + std::cout< +#include + +const char * suits[] = { + "CLUBS", + "SPADES", + "DIAMONDS", + "HEARTS" +}; + +const char * color[] = { + "RED", + "BLACK" +}; + +void PrintHand(const Player pl ,const Card deck[],const int cardsInDeck){ + + for(size_t i =0;i< pl.cardsInHand;i++){ + std::cout< +#include +#include +#include +#include "player.h" +#include "cards.h" + +const char * suit[] = { + "CLUBS", + "SPADES", + "DIAMONDS", + "HEARTS" +}; +const char * colors[] = { + "RED", + "BLACK" +}; + +int rangeRandomAlg2 (int min, int max){ + + + int random = min + (rand() % (max - min + 1)); + return random; +} +int main() +{ + Card deck[52]; + char delims [] = {' ','\n'}; + srand((unsigned) time(NULL)); + std::ifstream file ("cards.txt"); + const size_t numberOfCardsInDeck = 52; + size_t counter = 0; + while (!file.eof()) + { + if(file.peek()=='\n'){file.get();} + else{ + Card newCard; + char input [10]; + file.getline(input,10,' '); + for(size_t i=0;i< sizeof(suit)/sizeof(char*);i++)if(!strcmp(input,suit[i]))newCard.suit = (Suit)i; + file.getline(input,10,' '); + for(size_t i=0;i< sizeof(colors)/sizeof(char*);i++)if(!strcmp(input,colors[i]))newCard.color = (Color)i; + file.getline(input,10,'\n'); + newCard.Honor[0] = input[0]; + if(newCard.Honor[0]=='1')newCard.Honor[1] = '0'; + deck[counter] = newCard; + counter ++; + } + } + + Player player1; + Player player2; + Player player3; + Player player4; + int currentCard = 0; + while(player1.cardsInHand+player2.cardsInHand+player3.cardsInHand+player4.cardsInHand != numberOfCardsInDeck){ + int random = rangeRandomAlg2(1,4); + switch (random) + { + case 1: + if(player1.cardsInHand == 13)break; + player1.hand[player1.cardsInHand] = currentCard; + player1.cardsInHand +=1;currentCard +=1; + break; + case 2: + if(player2.cardsInHand == 13)break; + player2.hand[player2.cardsInHand] = currentCard; + player2.cardsInHand +=1;currentCard +=1; + break; + case 3: + if(player3.cardsInHand == 13)break; + player3.hand[player3.cardsInHand] = currentCard; + player3.cardsInHand +=1;currentCard +=1; + break; + case 4: + if(player4.cardsInHand == 13)break; + player4.hand[player4.cardsInHand] = currentCard; + player4.cardsInHand += 1;currentCard +=1; + break; + default: + break; + } + } + + EnterCardInFile(player1,deck,numberOfCardsInDeck); + EnterCardInFile(player2,deck,numberOfCardsInDeck); + EnterCardInFile(player3,deck,numberOfCardsInDeck); + EnterCardInFile(player4,deck,numberOfCardsInDeck); + return 0; +} \ No newline at end of file diff --git a/Practicum/Week 01/Solutions/borislavivanov/zad4.cpp b/Practicum/Week 01/Solutions/borislavivanov/zad4.cpp new file mode 100644 index 0000000..95d4c64 --- /dev/null +++ b/Practicum/Week 01/Solutions/borislavivanov/zad4.cpp @@ -0,0 +1,74 @@ +#include +#include + + +const char * hex = { + "0123456789ABCDEF" +}; + +size_t sizeofChar(const char* input){ + size_t counter = 0; + while (input[counter]!='\0') + { + counter++; + } + return counter-1; + +} + +void reverseChar(char* str) +{ + for(size_t i =0;i 0){ + result[counter] = hex[ip%16]; + counter++; + ip/=16; + } + result[counter] = '\0'; + reverseChar(result); + std::cout << result; + size_t i =0; + while(result[i] !='\0'){ + std::cout< +#include + +int main(){ + const char deviders[] = {"0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM-"}; + std::cout< +#include + + +int main(){ + std::fstream file("text.txt",std::ios::out | std::ios::in); + size_t readCursor = file.tellg(); + size_t writeCursor = file.tellg(); + if(!file.is_open())return 0; + while (!file.eof()) + { + file.seekg(readCursor); + char c = file.get(); + if(c != ' '){ + file.seekg(writeCursor); + file< +#include "point.h" +#include "triangle.h" +#include "quadrilateral.h" +int main(){ + point a; + double offy = 3.50; + double offx = 1.7; + triangle ABC; + quadrilateral ABCD; + translate(ABCD,offx,offy); + translate(ABC,offx,offy); + translate(a,offx,offy); + std::cout< + + int findGCD(int a, int b) { + if (b == 0) + return a; + return findGCD(b, a % b); + } + + int Fraction::getNum()const{ + return this->num; + } + int Fraction::getDenum() const{ + return this->denum; + } + double Fraction::value() const{ + return (num*1.0/denum*1.0); + } + void Fraction::setNum(int num){ + this->num = num; + } + void Fraction::setDenum(int denum){ + if(denum != 0)this->denum = denum; + else std::cout<<"ne"; + } + void Fraction::add(const Fraction &other){ + if(this->denum == other.denum){ + this->num += other.num; + } + else{ + this->num = this->num*other.denum + other.num*this->denum; + this -> denum = this->denum*other.denum; + } + this->reduce(); + } + void Fraction::subtract(const Fraction &other){ + if(this->denum == other.denum){ + this->num -= other.num; + } + else{ + this->num = this->num*other.denum - other.num*this->denum; + this -> denum = this->denum*other.denum; + } + this->reduce(); + } + void Fraction::divide(const Fraction &other){ + this->num *=other.denum; + this->denum/=other.num; + this->reduce(); + } + void Fraction::mult(const Fraction &other){ + this->num *= other.num; + this->denum*=other.denum; + this->reduce(); + } + void Fraction::reverse(){ + std::swap(this->denum,this->num); + } + bool Fraction::compare(const Fraction &other)const{ + if(this->value()>other.value())return true; + return false; + } + void Fraction::print(){ + std::cout<num<<'/'<denum; + } + void Fraction::reduce(){ + int denom; + denom = findGCD(this->num,this->denum); + this->num/=denom; + this->denum/=denom; + } diff --git a/Practicum/Week 04/solutions/borislavivanov/zad1prakt/main.cpp b/Practicum/Week 04/solutions/borislavivanov/zad1prakt/main.cpp new file mode 100644 index 0000000..0590858 --- /dev/null +++ b/Practicum/Week 04/solutions/borislavivanov/zad1prakt/main.cpp @@ -0,0 +1,50 @@ +#include +#include "farction.hpp" + +int main() { + Fraction frac1; + frac1.setNum(3); + frac1.setDenum(4); + + Fraction frac2; + frac2.setNum(1); + frac2.setDenum(2); + + std::cout << "Initial Fraction 1: "<< frac1.value()<<' '; + frac1.print(); + + std::cout << "---------------------------------" << std::endl; + std::cout << "Initial Fraction 2: "<< frac2.value()<<' '; + frac2.print(); + + + frac1.add(frac2); + std::cout << "---------------------------------" << std::endl; + std::cout << "Add Fraction 2 to Fraction 1: "; + frac1.print(); + + frac1.subtract(frac2); + std::cout << "---------------------------------" << std::endl; + std::cout << "Subtract Fraction 2 from Fraction 1: "; + frac1.print(); + + frac1.divide(frac2); + std::cout << "---------------------------------" << std::endl; + std::cout << "Divide Fraction 1 by Fraction 2: "; + frac1.print(); + + frac1.mult(frac2); + std::cout << "---------------------------------" << std::endl; + std::cout << "Multiply Fraction 1 by Fraction 2: "; + frac1.print(); + + frac1.reverse(); + std::cout << "---------------------------------" << std::endl; + std::cout << "Reverse Fraction 1: "; + frac1.print(); + + bool result = frac1.compare(frac2); + std::cout << "---------------------------------" << std::endl; + std::cout << "Compare Fraction 1 and Fraction 2: " << (result ? "Fraction 1 is smaller" : "Fraction 2 is smaller") << std::endl; + +} \ No newline at end of file diff --git a/Practicum/Week 04/solutions/borislavivanov/zad2prakt/main.cpp b/Practicum/Week 04/solutions/borislavivanov/zad2prakt/main.cpp new file mode 100644 index 0000000..1ce4607 --- /dev/null +++ b/Practicum/Week 04/solutions/borislavivanov/zad2prakt/main.cpp @@ -0,0 +1,18 @@ +#include "student.hpp" +#include +int main(){ + Student one; + Student two; + one.setName("Ivan Karanchev"); + one.setNumInClass(4); + int temp [5] = {4,5,6,5,4}; + int temp2 [5] = {4,5,6,5,3}; + one.setSubjectsGrades(temp); + two.setName("Petur Petkov"); + two.setNumInClass(6); + two.setSubjectsGrades(temp2); + one.Print(); + two.Print(); + std::cout< +#include + +void Student::InputStudent(){ + std::cin.getline(this->name,nameLenght); + std::cin>>this->numInClass; + for(size_t i=0;i>this->subjectsGrades[i]; +} +void Student::OutputStudent() const{ + std::cout<name<numInClass<subjectsGrades[i]<<' '; + } + std::cout<subjectsGrades[i]; + } + return temp/numGrades; +} +const char* Student::getName() const{ + return this->name; +} +size_t Student::getNumInClass() const{ + return this->numInClass; +} +const double* Student::getSubjectGrades(size_t i) const{ + return this->subjectsGrades; +} +void Student::setName(const char* Name){ + strcpy(this->name,Name); +} +void Student::setNumInClass(size_t num){ + this->numInClass = num; +} +void Student::setSubjectsGrades(int grades[]){ + for(size_t i =0;isubjectsGrades[i] = grades[i]; + } +} +bool Student::compareAvarageGrades(Student &other)const{ + if(this->AvarageGrade()>other.AvarageGrade())return true; + return false; +} + +void Student::Print() const{ + std::cout<name<<' '<numInClass<<' '; + for(size_t i = 0;isubjectsGrades[i]<<' '; + std::cout<AvarageGrade(); + std::cout< +const size_t nameLenght = 40; +const size_t numGrades = 5; +class Student +{ + private: + + size_t numInClass; + char name [nameLenght] = {' ',}; + double subjectsGrades [numGrades]; + + public: + + void InputStudent(); + void OutputStudent() const; + double AvarageGrade() const; + const char* getName() const; + size_t getNumInClass() const; + const double* getSubjectGrades(size_t i) const; + void setName(const char* Name); + void setNumInClass(size_t num); + void setSubjectsGrades(int grades[]); + bool compareAvarageGrades(Student &other)const; + void Print()const; +}; \ No newline at end of file diff --git a/Practicum/Week 04/solutions/borislavivanov/zad3prakt/class.cpp b/Practicum/Week 04/solutions/borislavivanov/zad3prakt/class.cpp new file mode 100644 index 0000000..ed2d522 --- /dev/null +++ b/Practicum/Week 04/solutions/borislavivanov/zad3prakt/class.cpp @@ -0,0 +1,57 @@ +#include +#include "class.hpp" +#include "student.hpp" + +size_t Class::getCurrNumINClass() const{ + return this->currentStudInClass; +} + +void Class::PrintClass() const{ + for(size_t i =0;icurrentStudInClass;i++) + this->clas[i].Print(); +} +Student Class::FindStudent(size_t numInClass) const{ + + for(size_t i =0;icurrentStudInClass;i++){ + if(this->clas[i].getNumInClass() == numInClass) + return this->clas[i]; + } + throw std::invalid_argument("student NOT found"); +} +bool Class::StudentInClass(size_t numInClass)const{ + for(size_t i =0;icurrentStudInClass;i++){ + if(this->clas[i].getNumInClass() == numInClass) + return true; + } + return false; +} +void Class::addStudent(Student &student){ + if(!(this->StudentInClass(student.getNumInClass()))){ + this->clas[this->currentStudInClass] = student; + this->currentStudInClass+=1; + } + else throw std::invalid_argument("student IN class"); +} +void Class::removeStudent(size_t numInClass){ + for(size_t i =0;icurrentStudInClass;i++){ + if(this->clas[i].getNumInClass() == numInClass) + { + for(size_t j = i;jclas[j] = this->clas[j+1]; + } + this->currentStudInClass-=1; + break; + } +} +double Class::AvarageGradeInClass() const{ + double temp = 0; + for(size_t i =0;icurrentStudInClass;i++){ + temp+= this->clas[i].AvarageGrade(); + } + temp/=this->currentStudInClass; + return temp; +} +bool Class::CompareAVGRadesInClasses(Class &other) const{ + if(this->AvarageGradeInClass()>other.AvarageGradeInClass())return true; + return false; +} diff --git a/Practicum/Week 04/solutions/borislavivanov/zad3prakt/class.hpp b/Practicum/Week 04/solutions/borislavivanov/zad3prakt/class.hpp new file mode 100644 index 0000000..5107ef1 --- /dev/null +++ b/Practicum/Week 04/solutions/borislavivanov/zad3prakt/class.hpp @@ -0,0 +1,21 @@ +#pragma once +#include "student.hpp" +#include + +const size_t maxStudentsInClass = 40; + +class Class{ + private: + Student clas [maxStudentsInClass]; + size_t currentStudInClass = 0; + + public: + bool StudentInClass(size_t numInClass)const; + size_t getCurrNumINClass() const; + void PrintClass() const; + void addStudent(Student &student); + void removeStudent(size_t numInClass); + double AvarageGradeInClass() const; + bool CompareAVGRadesInClasses(Class &other)const; + Student FindStudent(size_t numInClass) const; +}; diff --git a/Practicum/Week 04/solutions/borislavivanov/zad3prakt/main.cpp b/Practicum/Week 04/solutions/borislavivanov/zad3prakt/main.cpp new file mode 100644 index 0000000..c38593d --- /dev/null +++ b/Practicum/Week 04/solutions/borislavivanov/zad3prakt/main.cpp @@ -0,0 +1,55 @@ +#include +#include "student.hpp" +#include "class.hpp" + +int main(){ + Class a; + Class b; + + Student three; + Student four; + + int temp3 [5] = {3,5,6,3,4}; + int temp4 [5] = {4,3,6,5,5}; + three.setName("Sasho Roman"); + three.setNumInClass(4); + three.setSubjectsGrades(temp3); + four.setName("Daniel Kornev"); + four.setNumInClass(6); + four.setSubjectsGrades(temp4); + + Student one; + Student two; + + one.setName("Ivan Karanchev"); + one.setNumInClass(3); + int temp [5] = {4,5,6,5,4}; + int temp2 [5] = {4,5,6,5,3}; + one.setSubjectsGrades(temp); + two.setName("Petur Petkov"); + two.setNumInClass(6); + two.setSubjectsGrades(temp2); + + + + a.addStudent(one); + a.addStudent(two); + std::cout< +#include + +void Student::InputStudent(){ + std::cin.getline(this->name,nameLenght); + std::cin>>this->numInClass; + for(size_t i=0;i>this->subjectsGrades[i]; +} +void Student::OutputStudent() const{ + std::cout<name<numInClass<subjectsGrades[i]<<' '; + } + std::cout<subjectsGrades[i]; + } + return temp/numGrades; +} +const char* Student::getName() const{ + return this->name; +} +size_t Student::getNumInClass() const{ + return this->numInClass; +} +const double* Student::getSubjectGrades(size_t i) const{ + return this->subjectsGrades; +} +void Student::setName(const char* Name){ + strcpy(this->name,Name); +} +void Student::setNumInClass(size_t num){ + this->numInClass = num; +} +void Student::setSubjectsGrades(int grades[]){ + for(size_t i =0;isubjectsGrades[i] = grades[i]; + } +} +bool Student::compareAvarageGrades(Student &other)const{ + if(this->AvarageGrade()>other.AvarageGrade())return true; + return false; +} + +void Student::Print() const{ + std::cout<name<<' '<numInClass<<' '; + for(size_t i = 0;isubjectsGrades[i]<<' '; + std::cout<AvarageGrade(); + std::cout< +const size_t nameLenght = 40; +const size_t numGrades = 5; +class Student +{ + private: + + size_t numInClass; + char name [nameLenght] = {' ',}; + double subjectsGrades [numGrades]; + + public: + void InputStudent(); + void OutputStudent() const; + double AvarageGrade() const; + const char* getName() const; + size_t getNumInClass() const; + const double* getSubjectGrades(size_t i) const; + void setName(const char* Name); + void setNumInClass(size_t num); + void setSubjectsGrades(int grades[]); + bool compareAvarageGrades(Student &other)const; + void Print()const; +}; \ No newline at end of file diff --git a/Seminar/Week 04/solution/borislavivanov/zad1Seminar/Complex.cpp b/Seminar/Week 04/solution/borislavivanov/zad1Seminar/Complex.cpp new file mode 100644 index 0000000..048d248 --- /dev/null +++ b/Seminar/Week 04/solution/borislavivanov/zad1Seminar/Complex.cpp @@ -0,0 +1,46 @@ +#include "complex.hpp" +#include + + Complex::Complex(){ + + } + Complex::Complex(const double re,const double im){ + this->Im = im; + this->Re = re; + + } + double Complex::getRe()const{return Re;} + + void Complex::setRe(const double Re){this->Re = Re;} + + double Complex::getIm() const {return Im;} + + void Complex::setIm(const double Im){this->Im = Im;} + + void Complex::print()const {std::cout<<'('<Im = c.getIm(); + this->Re = c.getRe(); + return *this; + } + Complex Complex::operator+ (const Complex c) const{ + Complex result; + result.setIm(this->Im+c.getIm()); + result.setRe(this->Re+c.getRe()); + return result; + } + Complex Complex::operator- (const Complex c) const{ + Complex result; + result.setIm(this->Im-c.getIm()); + result.setRe(this->Re-c.getRe()); + return result; + } + + Complex Complex::operator* (const Complex c)const{ + Complex result; + result.setIm((this->Re*c.getIm())+(this->Im*c.getRe())); + result.setRe((this->Re*c.getRe())-(this->Im*c.getIm())); + return result; + } + diff --git a/Seminar/Week 04/solution/borislavivanov/zad1Seminar/complex.hpp b/Seminar/Week 04/solution/borislavivanov/zad1Seminar/complex.hpp new file mode 100644 index 0000000..4cbd192 --- /dev/null +++ b/Seminar/Week 04/solution/borislavivanov/zad1Seminar/complex.hpp @@ -0,0 +1,30 @@ +#pragma once +class Complex{ + private: + + double Re; + double Im; + + public: + Complex(); + Complex(const double re,const double im); + + double getRe()const; + + void setRe(const double Re); + + double getIm() const ; + + void setIm(const double Im); + + void print() const; + + Complex &operator=(const Complex c); + + + Complex operator+ (const Complex c) const; + Complex operator- (const Complex c) const; + + Complex operator* (const Complex c)const; + +}; \ No newline at end of file diff --git a/Seminar/Week 04/solution/borislavivanov/zad1Seminar/zad1.cpp b/Seminar/Week 04/solution/borislavivanov/zad1Seminar/zad1.cpp new file mode 100644 index 0000000..d8f9d3c --- /dev/null +++ b/Seminar/Week 04/solution/borislavivanov/zad1Seminar/zad1.cpp @@ -0,0 +1,30 @@ +#include +#include "complex.hpp" + +int main(){ + Complex c; + Complex p; + Complex sum; + Complex mult; + Complex subt; + Complex test(5,6); + c.setIm(4); + c.setRe(8); + p.setIm(2); + p.setRe(16); + sum = c+p; + subt = c-p; + mult = c*p; + c.print(); + std::cout< + Car::Car(){ + this->hp = 90; + this->distance = 0; + this->tank = 0; + } + double Car::getHp() const{return hp;} + double Car::getTank() const{return tank;} + double Car::getDistance() const{return distance;} + void Car::Upgrade(){ + if(this->hp+15 >150)this->hp = 150; + else this->hp+=15; + } + void Car::Fill(){ + this->tank = 100; + } + void Car::Drive(double routeDistance){ + if (this->tank hp/15)) + { + std::cout<<"Not Enought Gas"; + } + else{ + this->tank -= routeDistance*(this->hp/15); + this->distance+=routeDistance; + } + } + void Car::print(){ + std::cout<<"hp ->"<hp<<" tank ->"<tank<<" distance->"<distance< + +int main(){ + double distanceToTravel = 0; + std::cin>>distanceToTravel; + Car newCar; + newCar.print(); + newCar.Fill(); + newCar.print(); + newCar.Upgrade(); + newCar.print(); + newCar.Drive(distanceToTravel); + newCar.print(); + return 0; + +} \ No newline at end of file