From 1ca544105e46b2a4f992e408da8f0ea2c29ef149 Mon Sep 17 00:00:00 2001 From: Arity-T Date: Mon, 1 Dec 2025 11:40:36 +0000 Subject: [PATCH] =?UTF-8?q?=D0=A7=D1=82=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B4?= =?UTF-8?q?=D0=B0=D0=BD=D0=BD=D1=8B=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bitcoin-project/.gitignore | 2 ++ bitcoin-project/Makefile | 26 +++++++++++++++++ bitcoin-project/src/csv_loader.cpp | 47 ++++++++++++++++++++++++++++++ bitcoin-project/src/csv_loader.hpp | 6 ++++ bitcoin-project/src/main.cpp | 17 +++++++++++ bitcoin-project/src/record.hpp | 11 +++++++ 6 files changed, 109 insertions(+) create mode 100644 bitcoin-project/.gitignore create mode 100644 bitcoin-project/Makefile create mode 100644 bitcoin-project/src/csv_loader.cpp create mode 100644 bitcoin-project/src/csv_loader.hpp create mode 100644 bitcoin-project/src/main.cpp create mode 100644 bitcoin-project/src/record.hpp diff --git a/bitcoin-project/.gitignore b/bitcoin-project/.gitignore new file mode 100644 index 0000000..a43df3f --- /dev/null +++ b/bitcoin-project/.gitignore @@ -0,0 +1,2 @@ +data +build \ No newline at end of file diff --git a/bitcoin-project/Makefile b/bitcoin-project/Makefile new file mode 100644 index 0000000..db019f6 --- /dev/null +++ b/bitcoin-project/Makefile @@ -0,0 +1,26 @@ +CXX = g++ +CXXFLAGS = -std=c++17 -O2 -Wall -Wextra + +SRC_DIR = src +BUILD_DIR = build + +SRCS = $(wildcard $(SRC_DIR)/*.cpp) +OBJS = $(patsubst $(SRC_DIR)/%.cpp,$(BUILD_DIR)/%.o,$(SRCS)) + +TARGET = $(BUILD_DIR)/bitcoin_app + +all: $(TARGET) + +$(BUILD_DIR): + mkdir -p $(BUILD_DIR) + +$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp | $(BUILD_DIR) + $(CXX) $(CXXFLAGS) -c $< -o $@ + +$(TARGET): $(OBJS) + $(CXX) $(CXXFLAGS) $^ -o $@ + +clean: + rm -rf $(BUILD_DIR) + +.PHONY: all clean diff --git a/bitcoin-project/src/csv_loader.cpp b/bitcoin-project/src/csv_loader.cpp new file mode 100644 index 0000000..11b67f9 --- /dev/null +++ b/bitcoin-project/src/csv_loader.cpp @@ -0,0 +1,47 @@ +#include "csv_loader.hpp" +#include +#include +#include + +std::vector load_csv(const std::string& filename) { + std::vector data; + std::ifstream file(filename); + + if (!file.is_open()) { + throw std::runtime_error("Cannot open file: " + filename); + } + + std::string line; + + // читаем первую строку (заголовок) + std::getline(file, line); + + while (std::getline(file, line)) { + std::stringstream ss(line); + std::string item; + + Record row; + + std::getline(ss, item, ','); + row.timestamp = std::stod(item); + + std::getline(ss, item, ','); + row.open = std::stod(item); + + std::getline(ss, item, ','); + row.high = std::stod(item); + + std::getline(ss, item, ','); + row.low = std::stod(item); + + std::getline(ss, item, ','); + row.close = std::stod(item); + + std::getline(ss, item, ','); + row.volume = std::stod(item); + + data.push_back(row); + } + + return data; +} diff --git a/bitcoin-project/src/csv_loader.hpp b/bitcoin-project/src/csv_loader.hpp new file mode 100644 index 0000000..727aef7 --- /dev/null +++ b/bitcoin-project/src/csv_loader.hpp @@ -0,0 +1,6 @@ +#pragma once +#include +#include +#include "record.hpp" + +std::vector load_csv(const std::string& filename); diff --git a/bitcoin-project/src/main.cpp b/bitcoin-project/src/main.cpp new file mode 100644 index 0000000..7e19e39 --- /dev/null +++ b/bitcoin-project/src/main.cpp @@ -0,0 +1,17 @@ +#include +#include "csv_loader.hpp" + +int main() { + auto records = load_csv("data/data.csv"); + + std::cout << "Loaded rows: " << records.size() << "\n"; + + for (int i = 0; i < 5 && i < records.size(); i++) { + std::cout << records[i].timestamp << " " + << records[i].open << " " + << records[i].high << " " + << records[i].low << " " + << records[i].close << " " + << records[i].volume << "\n"; + } +} diff --git a/bitcoin-project/src/record.hpp b/bitcoin-project/src/record.hpp new file mode 100644 index 0000000..e293e07 --- /dev/null +++ b/bitcoin-project/src/record.hpp @@ -0,0 +1,11 @@ +#pragma once +#include + +struct Record { + double timestamp; + double open; + double high; + double low; + double close; + double volume; +};