Multiples instancias de una estructura

Iniciado por huchoko, 23 Octubre 2018, 04:06 AM

0 Miembros y 1 Visitante están viendo este tema.

huchoko

Tengo este código:
Código (cpp) [Seleccionar]

#include <iostream>

void add();
void db();

typedef struct {
int price;
int id;
char name[50];
}prod;

prod a;

int main()
{
int op;

do
{
std::cout << "[1]Añadir [2]Remover [3]Ver base de datos [4]Salir" << std::endl;
std::cout << "Opcion: ";
std::cin >> op;
switch (op)
{
case 1:
add();
break;

case 3:
db();
break;
case 4:
return 0;
}
}while (1 < 5);

return 0;
}

void add()
{
std::cout << "Inserte precio del producto: ";
std::cin >> a.price;
std::cout << "Inserte ID del producto: ";
std::cin >> a.id;
std::cout << "Inserte nombre del producto: ";
std::cin >> a.name;
}

void db()
{
std::cout << "Precio del producto: " << a.price << std::endl;
std::cout << "ID del producto: " << a.id << std::endl;
std::cout << "Nombre del producto: " << a.name << std::endl;
}

Funciona, pero quiero poder añadir más de un producto, ya que si una vez añadido un producto, y se vuelve a añadir otro completamente diferente este se sobreescribe.
Alguna idea?
Saludos :)
y... perdón por mi ignorancia.  :silbar:

También, si se llega a insertar un char en el precio, el programa se bugea, como evito eso?

Beginner Web

Asi es... pero puedes usar un arreglo de registros si deseas trabajar con estructuras estaticas o con listas si deseas trabajar con estructuras dinamicas  ;-)
7w7

ThunderCls

Necesitas lo que se conoce como un contenedor de datos, llámese:
1- array - std::array
2- lista - std::list
3- pila - std::stack
4- cola - std::queue
5- etc.

En cuanto a validar la entrada del usuario puedes hacerlo de cualquier forma que se te ocurra, un ejemplo seria:

Código (cpp) [Seleccionar]
do
{
    std::cout << "Inserte precio del producto: ";
    std::cin >> a.price;
}while(cin.fail())
-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/