macro-tracker v1.0.3
Simple Macro Tracker made (in C++) because all the apps have tons of ads and limited custom foods, so you need to enter all the macros every time you eat anything and that is a pain in the ass.
Cargando...
Buscando...
Nada coincide
main.cpp
Ir a la documentación de este archivo.
1
22
23#include "funciones.h"
24#include <iostream>
25#include <fstream>
26#include <sstream>
27#include <vector>
28#include <cstdlib>
29#include <string>
30
31using namespace std;
32
33/* ================= Función principal ================= */
34int main() {
35 const string userDataFile = "datos.txt";
36 const string objDataFile = "objetos.txt";
37 Usuario user;
38
39 // Si no existe el archivo de datos, es la primera ejecución.
40 if (!loadUserData(userDataFile, user))
41 {
42 // Ingreso de datos (primera vez)
43 cout << "Ingrese su nombre (sin tildes ni valores especiales): ";
44 getline(cin, user.nombre);
45 cout << "Bienvenido, " << user.nombre << endl;
46
47 user.altura = pedirNumero("Ingrese su altura en cm: ");
48 cout << "Altura procesada y guardada con exito." << endl;
49
50 user.peso = pedirNumero("Ingrese su peso en kg: ");
51 cout << "Peso procesado y guardado con exito." << endl;
52
53 user.edad = static_cast<int>(pedirNumero("Ingrese su edad en anhos: "));
54 cout << "Edad procesada y guardada con exito." <<endl;
55
57 cout << "Formula procesada y guardada con exito." << endl;
58
59 // Calcular las calorías de mantenimiento
60 user.maintenanceCal = calculateCalories(user.peso, user.altura, user.edad, user.formula);
61 cout << "\nSu requerimiento de calorias de mantenimiento es: "
62 << user.maintenanceCal << " kcal." << endl;
63
64 // Calcular los targets de macros según porcentajes predeterminados:
65 // 25% de proteína (4 cal/g), 20% de grasa (9 cal/g) y 55% de carbohidratos (4 cal/g)
67
68 // Inicialmente, los marcadores diarios son iguales a los targets
69 user.remainingCal = user.maintenanceCal;
71 user.remainingFat = user.targetFat;
72 user.remainingCarb = user.targetCarb;
73
74 // Guardar la información del usuario
75 saveUserData(userDataFile, user);
76
77 // Terminar el programa tras la primera ejecución
78 return 0;
79 }
80 else {
81 // Ejecuciones subsiguientes: se cargan los datos y se le da la bienvenida al usuario.
82 cout << "Bienvenido de nuevo, " << user.nombre << "!" << endl;
83
84 int opcion;
85 do {
86 cout << "\nMenu de opciones:" << endl;
87 cout << "0. Editar datos de usuario (nombre, altura, peso, edad, formula)" << endl;
88 cout << "1. Crear un objeto nutricional" << endl;
89 cout << "2. Eliminar un objeto nutricional" << endl;
90 cout << "3. Consumir objetos nutricionales" << endl;
91 cout << "4. Reiniciar marcador diario (nuevo dia)" << endl;
92 cout << "5. Mostrar calorias y macros restantes" << endl;
93 cout << "6. Salir" << endl;
94 cout << "Ingrese una opcion: ";
95 cin >> opcion;
96 cin.ignore(); // Limpiar el buffer de nueva línea
97 switch (opcion) {
98 case 0:
99 editUserData(user, userDataFile);
100 break;
101 case 1:
102 addObject(objDataFile);
103 break;
104 case 2:
105 deleteObject(objDataFile);
106 break;
107 case 3:
108 consumeObjects(objDataFile, userDataFile, user);
109 break;
110 case 4:
111 resetDailyMarker(userDataFile, user);
112 break;
113 case 5:
115 break;
116 case 6:
117 cout << "Saliendo del programa. Hasta luego!" << endl;
118 break;
119 default:
120 cout << "Opcion invalida, intente de nuevo." << endl;
121 }
122 } while(opcion != 6);
123 }
124 return 0;
125}
void resetDailyMarker(const string &userFile, Usuario &user)
Reinicia el marcador diario: reestablece las calorías y macros restantes a sus valores target.
void editUserData(Usuario &user, const string &filename)
Permite editar los datos del usuario y recalcular las calorías y macros.
Definition Functions.cpp:75
double calculateCalories(double peso, double altura, int edad, int formulaOption)
Calcula las calorías de mantenimiento en función del peso, altura, edad y fórmula.
double pedirNumero(const string &mensaje)
Solicita un número al usuario y valida la entrada.
void consumeObjects(const string &objFile, const string &userFile, Usuario &user)
Permite "consumir" objetos nutricionales. Se muestran los objetos existentes y el usuario puede selec...
void calcularMacrosObjetivo(double maintenanceCal, double &targetProtein, double &targetFat, double &targetCarb)
Calcula los valores objetivo de proteína, grasa y carbohidratos a partir de las calorías de mantenimi...
void mostrarRestante(double &remainingCal, double &remainingProtein, double &remainingFat, double &remainingCarb)
Muestra por pantalla las calorías y macros restantes del día.
int chooseCalorieFormula()
Permite seleccionar la fórmula para el cálculo de calorías.
void deleteObject(const string &filename)
Elimina un objeto nutricional existente. Se muestran los objetos actuales y se pide seleccionar el ob...
bool saveUserData(const string &filename, Usuario &user)
Guarda los datos del usuario en el archivo.
Definition Functions.cpp:52
void addObject(const string &filename)
Permite crear un nuevo objeto nutricional, solicitando sus datos, calculando sus calorías y guardándo...
bool loadUserData(const string &filename, Usuario &user)
Carga los datos del usuario desde el archivo.
Definition Functions.cpp:14
int main()
Definition main.cpp:34
Estructura que define un usuario con sus datos nutricionales.
Definition funciones.h:31
string nombre
Definition funciones.h:32
double remainingFat
Definition funciones.h:43
double targetCarb
Definition funciones.h:41
double maintenanceCal
Definition funciones.h:37
int edad
Definition funciones.h:35
double altura
Definition funciones.h:33
int formula
Definition funciones.h:36
double targetFat
Definition funciones.h:40
double peso
Definition funciones.h:34
double remainingCarb
Definition funciones.h:44
double remainingProtein
Definition funciones.h:42
double remainingCal
Definition funciones.h:38
double targetProtein
Definition funciones.h:39