C++ - Opinión sobre código; tienda básica

Iniciado por Clerning, 9 Enero 2021, 20:19 PM

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

Clerning

Muy buenas comunidad.
He programado un simple programa que trata de simular un paseo por un supermercado; quisiera opiniones y una retroalimentación del código que dejaré a continuación.

Código (cpp) [Seleccionar]
#include<iostream>
#include<string.h>

using namespace std;

/*
run: variable bool para ser constante en la ejecución del programa
money: variable int que simulara dinero para la compra de productos
minusMoney: variable int que restará el valor de "money" según el precio del producto
multProduct: variable int que sirve para multiplicar el precio de un producto según sea la cantidad pedida
shoppCart: variable string, array; simulará un carrito de compras
marketProduct: variable iny, array; serán los productos
*/
int main(){
int vegeFruts[3]; //vegetales y frutas
vegeFruts[0] = 2; //tomates
vegeFruts[1] = 4; //papas
vegeFruts[2] = 4; //lechuga
int breadRep[3]; //panaderia y reposteria
breadRep[0] = 2; //pan
breadRep[1] = 4; //pastel
breadRep[2] = 2; //dona
int snack[3]; //snacks
snack[0] = 2; //mani
snack[1] = 3; //nuez
snack[2] = 4; //papas fritas
int drink[3]; //bebidas
drink[0] = 5; //soda
drink[1] = 5; //jugo
drink[2] = 4; //te
int money = 2000, minusMoney = 0, multProduct = 0, opc = 0, indFil = 0, indCol = 0;
string shoppCart[16];
string totalProductNum[16];
string totalProduct[3][4];
//vegetales y frutas
totalProduct[0][0] = "Tomate";
totalProduct[1][0] = "Papa";
totalProduct[2][0] = "Lechuga";
//panaderia y reposteria
totalProduct[0][1] = "Pan";
totalProduct[1][1] = "Pastel";
totalProduct[2][1] = "Dona";
//snack
totalProduct[0][2] = "Mani";
totalProduct[1][2] = "Nuez";
totalProduct[2][2] = "Mani confitado";
//bebidas
totalProduct[0][3] = "Soda";
totalProduct[1][3] = "Jugo";
totalProduct[2][3] = "Te";
string multProductString;
bool run = true;

for(int i = 0; i < 16; i++){
shoppCart[i] = "[vacio]";
}
while(run){
do{
system("cls");
cout<<"\t--- Bienvenido a la tienda ---\nUsted cuenta con "<<money<<" de dinero."<<endl;
cout<<"1. Vegetales y frutas.\n2. Panaderia y reposteria.\n3. Snacks.\n4. Bebidas.\n5. Ver carrito.\n6. Salir."<<endl;
cin>>opc;
indCol = opc-1;
}while(opc < 1 || opc > 6);
switch(opc){ //opciones
case 1: //vegetales y frutas
do{
system("cls");
cout<<"1. Tomate | $2\n2. Papa | $4\n3. Lechuga | $4"<<endl;
cin>>opc;
indFil = opc-1;
}while(opc <= 0 || opc > 3);
minusMoney = vegeFruts[opc-1];
break;
case 2: //panaderia y reposteria
do{system("cls");
cout<<"1. Pan | $2\n2. Pastel | $4\n3. Dona | $2"<<endl;
cin>>opc;
indFil = opc-1;
}while(opc <= 0 || opc > 3);
minusMoney = breadRep[opc-1];
break;
case 3: //snack
do{
system("cls");
cout<<"1. Mani | $2\n2. Nuez | $3\n3. Mani confitado | $4"<<endl;
cin>>opc;
indFil = opc-1;
}while(opc <= 0 || opc > 3);
minusMoney = snack[opc-1];
break;
case 4: //bebidas
do{
system("cls");
cout<<"1. Soda | $5\n2. Jugo | $4\n3. Te | $4"<<endl;
cin>>opc;
indFil = opc-1;
}while(opc <= 0 || opc > 3);
minusMoney = drink[opc-1];
break;
case 5: //carrito
do{
system("cls");
for(int i = 0; i < 16; i++){
if(shoppCart[i] == "[vacio]"){
cout<<i+1<<". "<<shoppCart[i]<<endl;
}else{
cout<<i+1<<". "<<totalProductNum[i]<<" x "<<shoppCart[i]<<endl;
}
}
cout<<"1: Quitar producto del carro. | 2: Salir."<<endl;
cin>>opc;
if(opc == 1){
do{
cout<<"Escriba el numero que corresponde al producto que desea retirar; 0 para salir."<<endl;
cin>>opc;
if(opc == 0){
break;
}
shoppCart[opc-1] = "[vacio]";
}while(opc <= 0 || opc > 16 || shoppCart[opc-1] == "[vacio]");
}else if(opc == 2){
break;
}
}while(opc <= 0 || opc > 2);
opc = 5;
break;
case 6: //salir
run = false;
}
if(opc < 5){
do{
cout<<"Cantidad: "; cin>>multProduct; //multiplicar el precio del producto segun la cantidad
}while(multProduct <= 0);
multProductString = multProduct;
minusMoney *= multProduct;
if(money - minusMoney > 0){ //restar dinero
money -= minusMoney;
}else{
cout<<"No hay suficiente dinero."<<endl;
system("pause");
}
for(int i = 0; i < 16; i++){
if(shoppCart[i] == "[vacio]"){
totalProductNum[i] = to_string(multProduct);
shoppCart[i] = "[" + totalProduct[indFil][indCol] + "]";
break;
}
}
}
}

return 0;
}

CalgaryCorpus

#1
Supongo que aun no aprendes sobre structs o clases? hacer funciones?

Voy a suponer que no y no comentare al respecto.

La variable multProductString parece superflua, la asignas, pero no la usas mas. Sugiero eliminarla.

La variable totalProduct guarda nombres, no totales. Cambiale el nombre para que sea mas facil de leer/entender el codigo.

El ciclo que tienes en la linea 143 lo haces haya o no haya dinero. Esta bien eso?
Supongo que solo quieres aceptar la venta si hay dinero suficiente, no en todos los casos.
Aqui mi perfil en LinkedIn, invitame un cafe aqui

Clerning

Hola, gracias por tomarte el tiempo de leer mi código.
Citar

Supongo que aun no aprendes sobre structs o clases? hacer funciones?
De hecho sí sé de qué tratan; intentaba probar de cómo sería si no tuviera esas posibilidades. Veo que no termino muy bien.
Citar
La variable multProductString parece superflua, la asignas, pero no la usas mas. Sugiero eliminarla.
¡Oops, se me fue! Mi principal intención era de que, al momento de observar el carrito de compras, te señalara la cantidad del producto y el respectivo producto; pero al momento de ver qué pasaba, olvidé un detalle del comportamiento de C++, que es el tema de "Números + caracteres" (es decir, que según qué número se escriba, me devuelve un carácter), entonces tuve que hacer otra jugada.
Citar
La variable totalProduct guarda nombres, no totales. Cambiale el nombre para que sea mas facil de leer/entender el codigo.
Igual pensaba que no era el mejor nombre para una variable.
Citar
El ciclo que tienes en la linea 143 lo haces haya o no haya dinero. Esta bien eso?
No, no está bien. Me tuve que haber dado cuenta de ese detalle; qué despistado. Gracias por hacerlemo saber.