Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Error 404: en 23 Noviembre 2014, 16:36 pm



Título: Problema en una clase en C++:
Publicado por: Error 404: en 23 Noviembre 2014, 16:36 pm
Hola a todos, os explico:
debo hacer un programa que simule las ventas de tres sucursales. Cada una debe ser un objeto de la clase Ventas. Para referirnos a ellas usamos los valores 1, 2 y 3.
Debemos introducir el tipo de producto que han vendido y a cantidad de veces (aunque realmente el tipo de producto luego no se usa para nada).
Luego me debe decir que sucursal es la que mas productos ha vendido y cuantos (no hay que distinguir entre tipos de productos) y aquí es donde me sale el problema

Pues bien, ya llevo bastante avanzado pero me sale un error que no entiendo, me pone
(dirección del programa) [Error] 'ganador' does not name a type  :huh:

Les dejo el código:
 
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class Ventas{
  5. private:
  6. int sucursal;
  7. char producto;
  8. int cantidad;
  9. int cantidad_ganadora;
  10. public:
  11. Ventas(int identificador_sucursal){
  12. sucursal = identificador_sucursal;
  13. cantidad = 0;
  14. }
  15. void SetUnidades(int unidades){
  16. cantidad +=unidades;
  17. }
  18. int SucursalGanadora(Ventas sucursal_1,Ventas sucursal_2, Ventas sucursal_3){
  19. if (sucursal_1.cantidad > sucursal_2.cantidad && sucursal_1.cantidad > sucursal_3.cantidad)
  20. cantidad_ganadora = sucursal_1.cantidad;
  21. return 1;
  22. if (sucursal_2.cantidad > sucursal_1.cantidad && sucursal_2.cantidad > sucursal_3.cantidad)
  23. cantidad_ganadora = sucursal_2.cantidad;
  24. return 2;
  25. if (sucursal_3.cantidad > sucursal_1.cantidad && sucursal_3.cantidad > sucursal_2.cantidad)
  26. cantidad_ganadora = sucursal_3.cantidad;
  27. return 3;
  28. }
  29. int CantidadGanadora(){
  30.   return cantidad_ganadora;
  31. }
  32. };
  33.  
  34. int main(){
  35. int identif_sucursal;
  36. const int TERMINADOR = -1;
  37. bool fichero_vacio;
  38. char cod_producto;
  39. int unidades_vendidas;
  40. int ganador;
  41.  
  42. Ventas sucursal_ganadora(0);
  43. Ventas sucursal_1(1);
  44. Ventas sucursal_2(2);
  45. Ventas sucursal_3(3);
  46.  
  47. while (identif_sucursal != TERMINADOR){
  48. cout << "\nIntroduce la sucursal: ";
  49. cin >> identif_sucursal;
  50.  
  51. fichero_vacio = identif_sucursal == TERMINADOR;
  52. if (!fichero_vacio){
  53. cout << "Introduce el identificador del producto: ";
  54. cin >> cod_producto;
  55. cout << "Introduce la cantidad vendida de dicho producto: ";
  56. cin >> unidades_vendidas;
  57.  
  58. if (identif_sucursal == 1)
  59. sucursal_1.SetUnidades(unidades_vendidas);
  60. else if (identif_sucursal == 2)
  61. sucursal_2.SetUnidades(unidades_vendidas);
  62. else sucursal_3.SetUnidades(unidades_vendidas);
  63. }
  64. }
  65. }
  66.  
  67. ganador = sucursal_ganadora.SucursalGanadora(sucursal_1, sucursal_2, sucursal_3); //Aquí sale el error
  68. cout << "|nLa sucursal que mas productos ha vendido es la " << ganador;
  69. ganador = sucursal_ganadora.CantidadGanadora();//Y aquí también el mismo
  70. cout << "\nQue ha vendido " << ganador << "productos."
  71. }
  72.  
Agradeceria la ayuda, muchas gracias a todos.


Título: Re: Problema en una clase en C++:
Publicado por: rir3760 en 23 Noviembre 2014, 17:33 pm
El primer error que debes corregir es lógico y se encuentra en la definición de la función "SucursalGanadora" (faltan llaves para indicar el cuerpo de cada if):
Código
  1. int SucursalGanadora(Ventas sucursal_1,Ventas sucursal_2, Ventas sucursal_3){
  2.   if (sucursal_1.cantidad > sucursal_2.cantidad && sucursal_1.cantidad > sucursal_3.cantidad)
  3.      cantidad_ganadora = sucursal_1.cantidad;
  4.   return 1;
  5.  
  6.   if (sucursal_2.cantidad > sucursal_1.cantidad && sucursal_2.cantidad > sucursal_3.cantidad)
  7.      cantidad_ganadora = sucursal_2.cantidad;
  8.   return 2;
  9.  
  10.   if (sucursal_3.cantidad > sucursal_1.cantidad && sucursal_3.cantidad > sucursal_2.cantidad)
  11.      cantidad_ganadora = sucursal_3.cantidad;
  12.   return 3;
  13. }

Y el error que mencionas se debe a que al final del programa (en la función main) tienes una llave de cierre de mas y te falta un punto y coma para terminar la ultima sentencia:
Código
  1.      }
  2.   }
  3. } // Esta llave termina la funcion main
  4.  
  5.   ganador = sucursal_ganadora.SucursalGanadora(sucursal_1, sucursal_2, sucursal_3);
  6.   cout << "|nLa sucursal que mas productos ha vendido es la " << ganador;
  7.  
  8.   ganador = sucursal_ganadora.CantidadGanadora();
  9.   cout << "\nQue ha vendido " << ganador << "productos." // Falta el ';'
  10.  
  11.   // Se recomienda indicar el valor de retorno de la funcion
  12. }

Un saludo


Título: Re: Problema en una clase en C++:
Publicado por: Error 404: en 23 Noviembre 2014, 17:57 pm
Muchísimas gracias rir3760, y yo todo el rato cambiando cosas de la clase y resulta que era una llave de más  :-X
Muchas gracias, por este foro he resuelto muchísimas dudas que he tenido, espero que algún día cuando tenga más conocimientos poder ayudar yo también a otros que estén empezando  ;D