Skip to content

Commit

Permalink
feat(infinite number): class to make basic calculs
Browse files Browse the repository at this point in the history
  • Loading branch information
TheRealPad committed Feb 29, 2024
1 parent b4dbdb6 commit a3ab920
Show file tree
Hide file tree
Showing 5 changed files with 85 additions and 3 deletions.
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ set(SRC
src/Error/Error.cpp
src/OperationsPriorities/OperationsPriorities.cpp
src/OperationsPriorities/ProxyOperationsPriorities.cpp
src/InfiniteNumbers/InfiniteNumber.cpp
)

set(TEST_SRC
Expand Down
49 changes: 49 additions & 0 deletions src/InfiniteNumbers/InfiniteNumber.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
//
// Created by Pierre-Alexandre Delgado on 28/02/2024.
//

#include "InfiniteNumber.h"

#include <iostream>
#include <map>

namespace Operations {

std::string InfiniteNumber::addition(std::string &a, std::string &b) {
return "";
}

std::string InfiniteNumber::substraction(std::string &a, std::string &b) {
return "";
}

std::string InfiniteNumber::division(std::string &a, std::string &b) {
return "";
}

std::string InfiniteNumber::modulo(std::string &a, std::string &b) {
return "";
}

std::string InfiniteNumber::multiplication(std::string &a, std::string &b) {
return "";
}


std::string InfiniteNumber::makeOperation(std::string &operation) {
std::string a;
std::string b;
std::string sign;

for (unsigned int i = operation[0] == '+' || operation[0] == '-' ? 1 : 0; i < operation.size(); ++i) {
if (operation[i] == '+' || operation[i] == '-' || operation[i] == '*' || operation[i] == '/' || operation[i] == '%') {
a = operation.substr(0, i);
b = operation.substr(i + 1, operation.size() - 1);
sign = operation.substr(i, 1);
break;
}
}
return this->addition(a, b);
}

}
28 changes: 28 additions & 0 deletions src/InfiniteNumbers/InfiniteNumber.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
//
// Created by Pierre-Alexandre Delgado on 28/02/2024.
//

#ifndef INFINITENUMBER_H
#define INFINITENUMBER_H

#include <IOperations.hpp>

namespace Operations {

class InfiniteNumber : public IOperations {
public:
std::string makeOperation(std::string &operation);

private:
std::string addition(std::string &a, std::string &b);
std::string substraction(std::string &a, std::string &b);
std::string multiplication(std::string &a, std::string &b);
std::string division(std::string &a, std::string &b);
std::string modulo(std::string &a, std::string &b);
};

} // Operation



#endif //INFINITENUMBER_H
8 changes: 6 additions & 2 deletions src/OperationsPriorities/OperationsPriorities.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,16 @@
// Created by Pierre-Alexandre Delgado on 28/02/2024.
//

#include <memory>
#include "OperationsPriorities.h"
#include "InfiniteNumber.h"

namespace Operations {

std::string OperationsPriorities::makeOperation(std::string &operation) {
return {"1"};
std::unique_ptr<Operations::IOperations> infiniteNumber = std::make_unique<Operations::InfiniteNumber>();
std::string str = "-45671+245678";
return infiniteNumber->makeOperation(str);
}

}
}
2 changes: 1 addition & 1 deletion src/OperationsPriorities/OperationsPriorities.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

namespace Operations {

class OperationsPriorities : public IOperations {
class OperationsPriorities : IOperations {

public:
OperationsPriorities() = default;
Expand Down

0 comments on commit a3ab920

Please sign in to comment.