This commit is contained in:
2024-03-16 17:25:56 +01:00
parent 8a57eedbd6
commit 1646901adb
13 changed files with 176 additions and 52 deletions

View File

@@ -6,7 +6,7 @@
/* By: fgras-ca <fgras-ca@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/04 14:56:17 by fgras-ca #+# #+# */
/* Updated: 2024/03/04 16:52:42 by fgras-ca ### ########.fr */
/* Updated: 2024/03/16 13:28:08 by fgras-ca ### ########.fr */
/* */
/* ************************************************************************** */
@@ -45,7 +45,7 @@ bool BitcoinExchange::loadPriceData(const std::string& filename)
std::cerr << "Error: could not open price data file." << std::endl;
return false;
}
std::string line;
// Ignorer la première ligne (en-têtes)
std::getline(file, line);
@@ -64,10 +64,10 @@ bool BitcoinExchange::loadPriceData(const std::string& filename)
std::cerr << "Warning: Malformed line skipped -> " << line << std::endl;
}
}
file.close();
// Optionnel: afficher les données chargées pour vérification
/*for (std::map<std::string, float>::const_iterator it = dataBase.begin(); it != dataBase.end(); ++it)
{
std::cout << "Date: " << it->first << ", Exchange Rate: " << it->second << std::endl;
@@ -80,7 +80,7 @@ bool BitcoinExchange::parseLine(const std::string& line, std::string& date, floa
std::istringstream iss(line);
std::string valueStr;
std::getline(iss, date, '|'); // Extrait la date jusqu'au délimiteur '|'.
// Supprime les espaces en début et en fin de 'date'.
date.erase(0, date.find_first_not_of(" \t"));
date.erase(date.find_last_not_of(" \t") + 1);
@@ -93,7 +93,7 @@ bool BitcoinExchange::parseLine(const std::string& line, std::string& date, floa
{ // Vérifie la conversion et s'assure qu'il n'y a pas de caractères supplémentaires.
return (false);
}
return (true);
}
//Calcule la valeur d'échange du Bitcoin pour un montant donné à une date spécifique

View File

@@ -6,7 +6,7 @@
/* By: fgras-ca <fgras-ca@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/04 14:09:27 by fgras-ca #+# #+# */
/* Updated: 2024/03/04 17:31:07 by fgras-ca ### ########.fr */
/* Updated: 2024/03/16 13:37:43 by fgras-ca ### ########.fr */
/* */
/* ************************************************************************** */
@@ -27,6 +27,11 @@ int main(int argc, char **argv)
std::cerr << RED << "Error: could not open " << RESET << inputFile << std::endl;
exit(1);
}
// Ignorer la première ligne
std::string header;
getline(input, header);
BitcoinExchange exchange;
std::string priceDataFile = "data.csv";
if (!exchange.loadPriceData(priceDataFile))
@@ -43,9 +48,14 @@ int main(int argc, char **argv)
if (exchange.parseLine(line, date, amount))
{
// Vérifie que la valeur est dans la plage [0, 1000]
if (amount < 0 || amount > 1000)
if (amount < 0)
{
std::cout << RED << "Error: Value out of range [0, 1000]." << RESET << std::endl;
std::cout << RED << "Error: not a positive number." << RESET << std::endl;
continue; // Passe à la ligne suivante si la valeur est hors plage
}
else if (amount > 1000)
{
std::cout << RED << "Error: too large a number." << RESET << std::endl;
continue; // Passe à la ligne suivante si la valeur est hors plage
}
// Calcule la valeur d'échange du Bitcoin pour la date et le montant donnés
@@ -66,5 +76,3 @@ int main(int argc, char **argv)
}
return (0);
}