Initial work on calculator program.
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
*~
|
||||||
1
calculator/.gitignore
vendored
Normal file
1
calculator/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
calc
|
||||||
2
calculator/Makefile
Normal file
2
calculator/Makefile
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
calc: *.cpp *.h
|
||||||
|
clang++ -std=c++20 -O0 -g -o calc *.cpp
|
||||||
17
calculator/Product.h
Normal file
17
calculator/Product.h
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#ifndef SATISFACTORY_PRODUCT_H
|
||||||
|
#define SATISFACTORY_PRODUCT_H
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class Product {
|
||||||
|
public:
|
||||||
|
Product() {}
|
||||||
|
~Product() {}
|
||||||
|
|
||||||
|
std::string Name() const { return name; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string name;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
20
calculator/Recipe.cpp
Normal file
20
calculator/Recipe.cpp
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#include <exception>
|
||||||
|
#include <format>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "Recipe.h"
|
||||||
|
|
||||||
|
std::vector<std::pair<Product, float> > Recipe::Ingredients(float overclock)
|
||||||
|
{
|
||||||
|
if(overclock < 0.0f || overclock > 2.5f)
|
||||||
|
{
|
||||||
|
auto error = std::format("Invalid overclock of {:.2f}%.", (overclock * 100.0f));
|
||||||
|
throw std::invalid_argument(error);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<std::pair<Product, float> > rtn;
|
||||||
|
for(const auto &ingredient : ingredients)
|
||||||
|
rtn.push_back({ingredient.first, ingredient.second * overclock});
|
||||||
|
|
||||||
|
return rtn;
|
||||||
|
}
|
||||||
27
calculator/Recipe.h
Normal file
27
calculator/Recipe.h
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
#ifndef SATISFACTORY_RECIPE
|
||||||
|
#define SATISFACTORY_RECIPE
|
||||||
|
|
||||||
|
#include "Product.h"
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
class Recipe {
|
||||||
|
public:
|
||||||
|
Recipe()
|
||||||
|
{
|
||||||
|
// TEST:
|
||||||
|
ingredients.push_back({Product(), 20.0});
|
||||||
|
ingredients.push_back({Product(), 4.0});
|
||||||
|
ingredients.push_back({Product(), 60.0});
|
||||||
|
}
|
||||||
|
~Recipe() {}
|
||||||
|
|
||||||
|
std::pair<Product, float> Produces() const { return produces; }
|
||||||
|
std::vector<std::pair<Product, float> > Ingredients(float overclock = 1.0f);
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::pair<Product, float> produces;
|
||||||
|
std::vector<std::pair<Product, float> > ingredients;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
15
calculator/main.cpp
Normal file
15
calculator/main.cpp
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
#include "Recipe.h"
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
Recipe test;
|
||||||
|
auto ingredients = test.Ingredients();
|
||||||
|
ingredients = test.Ingredients(2.5);
|
||||||
|
|
||||||
|
for(const auto &i : ingredients)
|
||||||
|
std::cout << i.first.Name() << ", " << i.second << std::endl;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user