Problema en una clase en C++:

Iniciado por Error 404:, 23 Noviembre 2014, 16:36 PM

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

Error 404:

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 (cpp) [Seleccionar]

#include <iostream>
using namespace std;

class Ventas{
private:
int sucursal;
char producto;
int cantidad;
int cantidad_ganadora;
public:
Ventas(int identificador_sucursal){
sucursal = identificador_sucursal;
cantidad = 0;
}
void SetUnidades(int unidades){
cantidad +=unidades;
}
int SucursalGanadora(Ventas sucursal_1,Ventas sucursal_2, Ventas sucursal_3){
if (sucursal_1.cantidad > sucursal_2.cantidad && sucursal_1.cantidad > sucursal_3.cantidad)
cantidad_ganadora = sucursal_1.cantidad;
return 1;
if (sucursal_2.cantidad > sucursal_1.cantidad && sucursal_2.cantidad > sucursal_3.cantidad)
cantidad_ganadora = sucursal_2.cantidad;
return 2;
if (sucursal_3.cantidad > sucursal_1.cantidad && sucursal_3.cantidad > sucursal_2.cantidad)
cantidad_ganadora = sucursal_3.cantidad;
return 3;
}
int CantidadGanadora(){
    return cantidad_ganadora;
}
};

int main(){
int identif_sucursal;
const int TERMINADOR = -1;
bool fichero_vacio;
char cod_producto;
int unidades_vendidas;
int ganador;

Ventas sucursal_ganadora(0);
Ventas sucursal_1(1);
Ventas sucursal_2(2);
Ventas sucursal_3(3);

while (identif_sucursal != TERMINADOR){
cout << "\nIntroduce la sucursal: ";
cin >> identif_sucursal;

fichero_vacio = identif_sucursal == TERMINADOR;
if (!fichero_vacio){
cout << "Introduce el identificador del producto: ";
cin >> cod_producto;
cout << "Introduce la cantidad vendida de dicho producto: ";
cin >> unidades_vendidas;

if (identif_sucursal == 1)
sucursal_1.SetUnidades(unidades_vendidas);
else if (identif_sucursal == 2)
sucursal_2.SetUnidades(unidades_vendidas);
else sucursal_3.SetUnidades(unidades_vendidas);
}
}
}

ganador = sucursal_ganadora.SucursalGanadora(sucursal_1, sucursal_2, sucursal_3); //Aquí sale el error
cout << "|nLa sucursal que mas productos ha vendido es la " << ganador;
ganador = sucursal_ganadora.CantidadGanadora();//Y aquí también el mismo
cout << "\nQue ha vendido " << ganador << "productos."
}

Agradeceria la ayuda, muchas gracias a todos.
Si se puede imaginar, se puede programar.

rir3760

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 (cpp) [Seleccionar]
int SucursalGanadora(Ventas sucursal_1,Ventas sucursal_2, Ventas sucursal_3){
   if (sucursal_1.cantidad > sucursal_2.cantidad && sucursal_1.cantidad > sucursal_3.cantidad)
      cantidad_ganadora = sucursal_1.cantidad;
   return 1;
   
   if (sucursal_2.cantidad > sucursal_1.cantidad && sucursal_2.cantidad > sucursal_3.cantidad)
      cantidad_ganadora = sucursal_2.cantidad;
   return 2;
   
   if (sucursal_3.cantidad > sucursal_1.cantidad && sucursal_3.cantidad > sucursal_2.cantidad)
      cantidad_ganadora = sucursal_3.cantidad;
   return 3;
}


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 (cpp) [Seleccionar]
      }
   }
} // Esta llave termina la funcion main

   ganador = sucursal_ganadora.SucursalGanadora(sucursal_1, sucursal_2, sucursal_3);
   cout << "|nLa sucursal que mas productos ha vendido es la " << ganador;
   
   ganador = sucursal_ganadora.CantidadGanadora();
   cout << "\nQue ha vendido " << ganador << "productos." // Falta el ';'
   
   // Se recomienda indicar el valor de retorno de la funcion
}


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

Error 404:

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
Si se puede imaginar, se puede programar.