Estoy haciendo un programa sobre el menú de una tienda el cual tiene 4 opciones; Agregar producto, Borrar producto, Ver tabla de productos creados y Salir.
Ya cree la opción de Agregar producto (nombre, numero de orden, cantidad, precio, etc.) y la de salir, ambas opciones funcionan sin problemas.
Ahora tengo que hacer la opción de Borrar producto, pero no tengo idea de cómo borrar la información, cuando el usuario entra en esta opción se le tiene que mostrar los nombres de los productos que ha agregado junto con su número de orden y los datos deben de ser borrados con el numero de orden (seleccionado por el usuario), algo así…
¿Me podrían decir cómo hacerle o que puedo usar en esta parte para borrar la información?
Esta es la manera en la agrego los productos, las variables i y k son variables globales…
struct productos
{
int numor{}, //Numero de orden
cant{}; //Cantidad
float preuni{}, //Precio Unitario
subt{}, //Subtotal
IVA{}, //IVA
total{}; //Precio total
string codigo{}; //Codigo del producto
string descr{}; //Descripcion del producto
}producto[51];
int i=1; //numero de producto (contador)
int k=1; //numero consecutivo (contador)
void altaorden()
{
int can;
cout << "\n¿Cuantos productos quieres dar de alta?: "; cin >> can;
if (can <= 0 || can > 51)
{
system("cls");
cout << "Advertencia: La cantidad de productos ingresados no es valido, intentalo nuevamente";
return altaorden();
}
for (int p = 1; p <= can;)
{
if ( i < 51 ) //Numero de producto
{
if ( k <= 50 ) //En esta parte se generan numeros consecutivos de manera automatica
{
cout << "\nNumero de orden: ";
cout << k;
cout << endl;
producto[i].numor = k;
k++;
}
cin.ignore();
cout << "Descripcion del producto: ";
getline(cin, producto[i].descr);
cout << "Codigo de producto: ";
getline(cin, producto[i].codigo);
cout << "Cantidad para vender: "; cin >> producto[i].cant;
cout << "Precio unitario: $"; cin >> producto[i].preuni;
producto[i].subt = producto[i].preuni * producto[i].cant;
cout << "Subtotal: $" << producto[i].subt;
producto[i].IVA = producto[i].subt * 0.16;
cout << "\nIVA: $" << producto[i].IVA;
producto[i].total = producto[i].subt + producto[i].IVA;
cout << "\nPrecio total: $" << producto[i].total;
cout << "\n-------------------------------------------------------------------------------";
cout << endl;
i++;
}
p++;
}
}
¿Me podrían ayudar con otro problema? Ya cree la tabla de productos, la primera vez que entro me la imprime de manera correcta, así.
Pero cuando salgo al menú y vuelvo a entrar a la tabla me la imprime así.
Como dije, solo la imprime de manera correcta la primera vez que la veo, después me la imprime mal y no se porque, esta es la parte del código que utilizo para imprimir la tabla
void lista()
{
int c = k,m=7;
system("cls");
cout << endl;
cout << "Tabla de ordenes generadas";
cout << endl;
cout << endl;
cout << " Numero de orden ";
cout << "| Nombre de producto |";
cout << " Codigo de producto |";
cout << " Cantidad |";
cout << " Precio unitario |";
cout << " Subtotal |";
cout << " IVA |";
cout << " Precio total |";
cout << endl;
cout << "-------------------------------------------------------------------------------------------------------------------------------------";
cout << endl;
for (int L = 2; L <= c; L++)
{
cout << " ";
cout << "| |";
cout << " |";
cout << " |";
cout << " |";
cout << " |";
cout << " |";
cout << " |";
cout << endl;
cout << "-------------------------------------------------------------------------------------------------------------------------------------";
cout << endl;
}
for (int h = 1; h < c; h++)
{
gotoxy(8, m);
cout << producto[h].numor;
gotoxy(20, m);
cout << producto[h].descr;
gotoxy(52, m);
cout << producto[h].codigo;
gotoxy(70, m);
cout << producto[h].cant;
gotoxy(83, m);
cout << "$" << producto[h].preuni;
gotoxy(96, m);
cout << "$" << producto[h].subt;
gotoxy(107, m);
cout << "$" << producto[h].IVA;
gotoxy(119, m);
cout << "$" << producto[h].total;
m = m + 4;
}
cout << "\n\n\n";
system("pause");
system("cls");
}
void gotoxy(int x, int y)
{
HANDLE hcon;
hcon = GetStdHandle(STD_OUTPUT_HANDLE);
COORD dwPos;
dwPos.X = x;
dwPos.Y = y;
SetConsoleCursorPosition(hcon, dwPos);
}
Disculpen si son muchos problemas, soy principiante en programación con c++ y de vez en cuando suelo confundirme. Muchas gracias de antemano :)