From 842e015c14d56477b896361de12c162d57d0a8a2 Mon Sep 17 00:00:00 2001 From: rasmus Date: Mon, 17 Mar 2025 13:47:58 +0100 Subject: [PATCH] Add way to extract numbers from the csv file --- Include/FileHelper.h | 13 +++++++++++++ Include/FileReader.h | 5 ++++- Include/NumberHelper.h | 16 ++++++++++++++++ rolls.txt | 1 + src/FileHelper.cpp | 16 ++++++++++++++++ src/FileReader.cpp | 15 ++++++++++++--- src/NumberHelper.cpp | 19 +++++++++++++++++++ src/main.cpp | 24 ++++++++++++++++++++++-- 8 files changed, 103 insertions(+), 6 deletions(-) create mode 100644 Include/FileHelper.h create mode 100644 Include/NumberHelper.h create mode 100644 rolls.txt create mode 100644 src/FileHelper.cpp create mode 100644 src/NumberHelper.cpp diff --git a/Include/FileHelper.h b/Include/FileHelper.h new file mode 100644 index 0000000..5bfd97d --- /dev/null +++ b/Include/FileHelper.h @@ -0,0 +1,13 @@ +#ifndef FILEHELPER_H +#define FILEHELPER_H + +class FileHelper { + public: + FileHelper(); + + ~FileHelper(); + + static bool FileExists(char *path); +}; + +#endif \ No newline at end of file diff --git a/Include/FileReader.h b/Include/FileReader.h index 9b1fa76..7b23bd2 100644 --- a/Include/FileReader.h +++ b/Include/FileReader.h @@ -1,13 +1,16 @@ #ifndef FILEREADER_H #define FILEREADER_H +#include +#include + class FileReader { public: FileReader(); ~FileReader(); - char *Read(); + static std::string GetFile(char *path); }; #endif \ No newline at end of file diff --git a/Include/NumberHelper.h b/Include/NumberHelper.h new file mode 100644 index 0000000..ab37786 --- /dev/null +++ b/Include/NumberHelper.h @@ -0,0 +1,16 @@ +#ifndef NUMBERHELPER_H +#define NUMBERHELPER_H + +#include +#include + +class NumberHelper { + public: + NumberHelper(); + + ~NumberHelper(); + + static std::vector GetNumbers(const std::string csv); +}; + +#endif \ No newline at end of file diff --git a/rolls.txt b/rolls.txt new file mode 100644 index 0000000..aadbdc8 --- /dev/null +++ b/rolls.txt @@ -0,0 +1 @@ +2, 3, 5, 4, 9, 1, 2, 5, 3, 2, 4, 2, 3, 3, 4, 6, 10, 3, 2 diff --git a/src/FileHelper.cpp b/src/FileHelper.cpp new file mode 100644 index 0000000..8f0600f --- /dev/null +++ b/src/FileHelper.cpp @@ -0,0 +1,16 @@ +#include "../Include/FileHelper.h" +#include + +FileHelper::FileHelper() {}; +FileHelper::~FileHelper() {}; + +bool FileHelper::FileExists(char *path){ + struct stat s; + + // Check if file exists, and if it isn't a folder. + if (stat(path, &s) == 0 && !(s.st_mode & S_IFDIR)){ + return true; + } + + return false; +} \ No newline at end of file diff --git a/src/FileReader.cpp b/src/FileReader.cpp index 60b3514..c235ab2 100644 --- a/src/FileReader.cpp +++ b/src/FileReader.cpp @@ -1,9 +1,18 @@ #include "../Include/FileReader.h" -#include +#include +#include FileReader::FileReader() {}; FileReader::~FileReader() {}; -char *FileReader::Read(){ - return nullptr; +std::string FileReader::GetFile(char *path){ + std::ifstream file(path); + + std::string line; + + std::getline(file, line); + + file.close(); + + return line; } \ No newline at end of file diff --git a/src/NumberHelper.cpp b/src/NumberHelper.cpp new file mode 100644 index 0000000..0cf7378 --- /dev/null +++ b/src/NumberHelper.cpp @@ -0,0 +1,19 @@ +#include "../Include/NumberHelper.h" +#include +#include +#include + +NumberHelper::NumberHelper() {}; +NumberHelper::~NumberHelper() {}; + +std::vector NumberHelper::GetNumbers(const std::string csv){ + std::vector rolls; + std::stringstream ss(csv); + std::string number; + + while (std::getline(ss, number, ',')) { + rolls.push_back(std::stoi(number)); + } + + return rolls; +} \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 5f3fe83..c150522 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,7 +1,27 @@ #include #include +#include "../Include/FileReader.h" +#include "../Include/FileHelper.h" +#include "../Include/NumberHelper.h" -int main() { - std::cout << "Hello, World!" << std::endl; +int main(int argc, char *argv[]) { + if(argc < 2) { + std::cerr << "Please provide a CSV formatted file."; + return 0; + } + + if(!FileHelper::FileExists(argv[1])) { + std::cerr << "Filepath: " << argv[1] << " doesn't exist."; + return 0; + } + + std::string file = FileReader::GetFile(argv[1]); + + std::vector numbers = NumberHelper::GetNumbers(file); + + for(int i = 0; i < numbers.size(); i++) { + std::cout << numbers[i] << ' '; + } + return 0; }