Autor Tema: error system was not declared in this scope C++ 'to_string' was not declared in  (Leído 3643 veces)

CoduJ

  • Sin experiencia
  • *
  • Mensajes: 28
    • Ver Perfil
Hola, comunidad.
Hice un sencillo programa que trata de disimular la tarea de ir de compras a un mercado; cabe mencionar que el hecho de que no halla funciones para dividir este problema, es adrede, quería intentar cómo sería hacerlo sin esa "técnica".  Invito a que ustedes también puedan compartir una manera más de resolverlo.

Código: [Seleccionar]
#include<iostream>

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);
minusMoney *= multProduct;
if(money - minusMoney > 0){ //restar dinero
for(int i = 0; i < 16; i++){
if(shoppCart[i] == "[vacio]"){
totalProductNum[i] = to_string(multProduct);
shoppCart[i] = "[" + totalProduct[indFil][indCol] + "]";
break;
}
}
money -= minusMoney;
}else{
cout<<"No hay suficiente dinero."<<endl;
system("pause");
}
}
}

return 0;
}
« Última modificación: 13 de Febrero 2021, 15:31 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola, he ejecutado el programa y me ha salido el error siguiente:

error system was not declared in this scope

Esto lo he arreglado simplemente añadiendo al principio la línea siguiente:

#include <cstdlib>

Después me ha salido el error siguiente:

main.cpp|139|error: 'to_string' was not declared in this scope

He añadido al principio la siguiente línea:

#include <string>

Pero siguió saliéndome el error del to string.

to_string() es una característica de c++11. Como estoy usando CodeBlocks, me he ido a Project -> Build options -> Compiler settings y he activado la opción "Have g++ follow the C++11 ISO C++ language standard [-stc=c++0x]

Pero tampoco me ha funcionado. Hay una forma de solucionarlo descrita en https://www.programmersought.com/article/84184740114/ pero ya he desistido, así que me he ido a un compilador de c++ online y lo he probado online y ha funcionado bien.

Hago algunos comentarios sobre el código.

Veo que en los comentarios aparece marketProduct pero esa variable no aparece después en el código.

Has declarado cosas como:

Código: [Seleccionar]
int vegeFruts[3]; //vegetales y frutas
vegeFruts[0] = 2; //tomates
vegeFruts[1] = 4; //papas
vegeFruts[2] = 4; //lechuga

A mí esto no me parece demasiado correcto, en el sentido de que sabes que el índice 0 son tomates debido a un comentario del código, pero si el programa crece o se cambian cosas a la larga puede hacerse caótico porque no se sabe bien la correspondencia de los números con las cosas.

Para evitar esto lo suyo sería tener una estructura de datos, un struct al estilo clásico, o una clase al estilo de la programación orientada a objetos.

El no usar funciones en general hace el código no reutilizable, por lo que se desaconseja. Pero si lo has hecho para practicar, pues eso, sólo debería usarse algo así para practicar.

Saludos.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".