Código
En el mismo código se comenta el error, pues el cual es que estoy creando 512 estructuras, por lo cúal hay un límite de productos que se pueden ingresar. Pero me gustaría hacerlo dinámico, osea que el número de estructuras sea proporcional al número de productos. O(n)?
#include <iostream> #include <cstdio> #include <cstdlib> #include <ctime> typedef struct { int precio; int id; char name[255]; char adc[512]; // caracteristicas adicionales } prod; void addpr(prod *a); void db(prod *a); unsigned int pos = 0; unsigned int nume = 0; int main() { int op = 0; // Necesitamos una estructura llamada pres y una llamada *punpress // la cual apuntara a pres. prod pres[512], *punpres; // <- creando 512 estructuras??? ineficiente!!! punpres = pres; do { printf("[1]A%cadir producto [3]Ver base de datos [4]Salir\n", 164); std::cout << "-> "; std::cin >> op; switch (op) { case 1: addpr(punpres); break; case 3: db(punpres); break; case 4: return 0; default: std::cout << "Opcion invalida!" << std::endl; break; } } while (! std::cin.fail()); return 0; } void addpr(prod *estr) { fflush(stdin); srand(time(NULL)); std::cout << "Inserte nombre del producto: "; std::cin.getline(estr[pos].name, 100, '\n'); std::cout << "Inserte precio: "; std::cin >> estr[pos].precio; estr[pos].id = rand(); ++pos; ++nume; } void db(prod *a) { for (pos = 0; pos < nume; ++pos) { printf("Nombre: %s\n", a[pos].name); printf("Precio: $ %i\n", a[pos].precio); printf("ID: %i", a[pos].id); printf("\n------------------------\n"); } }
Ya le he tratado de hacer, con malloc, pero no era lo que buscaba...
Saludos
PD: Si compilo esto con g++, todo bien (también probé compilando con el standard C++11 y sigue funcionando), pero si compilo con cl (el compiler de VS Studio), al ejecutarlo y elegir la opción 1, se bugea y se salta el campo de ingresar nombre a ingresar precio.