Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Clase en c++, no funciona

Estas en el tema de Clase en c++, no funciona en el foro de C/C++ en Foros del Web. Buenas compañeros he estado haciendo aprendiendo a programar en c++ y en el momento me encuentro haciendo el siguiente ejercicio: Software Juegos Olímpicos - Río ...
  #1 (permalink)  
Antiguo 06/02/2013, 20:06
 
Fecha de Ingreso: diciembre-2012
Mensajes: 5
Antigüedad: 12 años
Puntos: 0
Pregunta Clase en c++, no funciona

Buenas compañeros he estado haciendo aprendiendo a programar en c++ y en el momento me encuentro haciendo el siguiente ejercicio:

Software Juegos Olímpicos - Río de Janeiro, Brasil

Los XXXI Juegos Olímpicos se celebrarán entre el 5 y el 21 de agosto de 2016 en la ciudad de Río de Janeiro, Brasil. El Comité Olímpico Internacional quiere contar para ese año con un registro sistematizado de la información de los resultados obtenidos por cada país participante. Usted como futuro desarrollador, debe elaborar un software que le permita realizar las siguientes operaciones utilizando Programación Orientada a Objetos:

1. Crear la clase “Delegacion” la cual debe contener: identificación del país o delegación, nombre del país o delegación, número de disciplinas deportivas en las cuales va a participar, número de deportistas y un arreglo que permita almacenar el tipo de medalla y la disciplina deportiva relacionada cuando se obtenga uno de los tres primeros lugares.

2. Crear los métodos set y get para los dos atributos: número de disciplinas deportivas en las cuales va a participar y número de deportistas. (Valor 15%)

3. Crear los siguientes métodos para la clase Delegación:

RegistrarMedalla: Método que recibe el tipo de medalla y la disciplina deportiva relacionada con dicha medalla cuando se obtenga uno de los tres primeros lugares (el método no tiene retorno). El método debe registrar la información correspondiente en el atributo arreglo definido en la clase.
CalcularPuntajeTotal: Método que debe retornar el puntaje obtenido por una delegación (el método no tiene parámetros de entrada), el cual se calcula a partir del número de medallas obtenidas y un peso especifico para cada una de ellas así: Oro (10 puntos), Plata (5 puntos) y Broce (3 puntos).

4. Crear un programa principal desde el cual se ingrese la información de una delegación y que llame el método Calcular Puntaje Total.

Nota: Defina los atributos, constructores, métodos y propiedades adicionales que considere necesarios.

Es un ejercicio de practica que me paso la profe, ya he escrito algunas lineas de codigo pero en esto estoy muy flojo realmente, asi que necesito que me ayuden diciendome diciendome en que estoy mal y si les es posible me recomienden tutoriales mas especificos y avanzados sobre este tema de la POO en c++.
Aqui les dejo lo que llevo de codigo se que van a encontrar varios errores y variables fuera de lugar pero espero que entiendan que he estado buscando como entender el tema:

Código C++:
Ver original
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. //Declaracion de la Clase.
  5. struct ArregloMedalleria{
  6.     int Medalla;
  7.     int Disciplina;
  8. };
  9. class Delegacion{
  10.     private:
  11.  
  12.     int IdenPais;
  13.     string NomPais;
  14.     ArregloMedalleria Medallas [2][50];
  15.     int NumDisciplinas;
  16.     int NumDeportistas;
  17.  
  18.     public:
  19.     Delegacion();
  20.     Delegacion(int,int);
  21.     Delegacion(int,string,int,int);
  22.  
  23.     void set_IdenPais(int);
  24.     void set_NomPais(string);
  25.     void set_Medallas(int,int);
  26.     void set_NumDisciplinas(int);
  27.     void set_NumDeportistas(int);
  28.     int get_IdenPais();
  29.     string get_NomPais();
  30.     ArregloMedalleria get_Medallas();
  31.     int get_NumDisciplinas();
  32.     int get_NumDeportistas();
  33.     void RegistrarMedalla(int,int);
  34.     int CalcularPuntajeTotal();
  35. };
  36. Delegacion :: Delegacion(){
  37. }
  38. Delegacion :: Delegacion(int med,int disc){
  39.  
  40. }
  41. Delegacion :: Delegacion(int id,string nom,int discip,int depor){
  42.     IdenPais = id;
  43.     NomPais = nom;
  44.     NumDisciplinas = discip;
  45.     NumDeportistas = depor;
  46. }
  47. void Delegacion :: set_IdenPais(int id){
  48.     IdenPais = id;
  49.  
  50.     return;
  51. }
  52. void Delegacion :: set_NomPais(string nom){
  53.     NomPais = nom;
  54.  
  55.     return;
  56. }
  57. void Delegacion :: set_NumDisciplinas(int discip){
  58.     NumDisciplinas = discip;
  59.  
  60.     return;
  61. }
  62. void Delegacion :: set_NumDeportistas(int depor){
  63.     NumDeportistas = depor;
  64.  
  65.     return;
  66. }
  67. void Delegacion :: set_Medallas(int med,int disc){
  68.     for(int i = 0;i < 50; i++){
  69.         Medallas [0][i].Medalla = med;
  70.         Medallas [1][i].Disciplina = disc;
  71.     }
  72.     return;
  73. }
  74. int Delegacion :: get_IdenPais(){
  75.     return IdenPais;
  76. }
  77. string Delegacion :: get_NomPais(){
  78.     return NomPais;
  79. }
  80. int Delegacion :: get_NumDisciplinas(){
  81.     return NumDisciplinas;
  82. }
  83. int Delegacion :: get_NumDeportistas(){
  84.     return NumDeportistas;
  85. }
  86. ArregloMedalleria Delegacion :: get_Medallas(){
  87.     return Medallas[2][50];
  88. }
  89. void Delegacion :: RegistrarMedalla(int med,int disc){
  90.     Delegacion set_Medallas(med,disc);
  91.     return;
  92. }
  93. int Delegacion :: CalcularPuntajeTotal(){
  94.     int Puntaje = 0;
  95.     for(int i = 0; i< 100; i++){
  96.         if(Delegacion get_Medallas().Medalla[i] == 1){
  97.             Puntaje = Puntaje + 10;
  98.         }else if(Delegacion get_Medallas().Medalla[i] = 2){
  99.             Puntaje = Puntaje + 5;
  100.         }else if(Delegacion get_Medallas().Medalla[i] = 3){
  101.             Puntaje = Puntaje + 3;
  102.         }
  103.     }
  104.     return Puntaje;
  105. }
  106.  
  107. int main()
  108. {
  109.     int NumPart;
  110.     int opcion1 = 5;
  111.     int opcion2 = 5;
  112.     int id;
  113.     string nom;
  114.     int disci;
  115.     int depor;
  116.     Delegacion Paises;
  117.     int idpais;
  118.     int med;
  119.     int discipli;
  120.     int idpais2;
  121.  
  122.     cout<<"Digite el Número de paises participantes: ";
  123.     cin>>NumPart;
  124.  
  125.     while(opcion1 != 3){
  126.         cout<<"Seleccione Una Opcion:"<<"\n"
  127.         "1.Ingreso de Informacion"<<"\n"
  128.         "2.Resultados"<<"\n"
  129.         "3.Salida"<<"\n";
  130.         cin>>opcion1;
  131.         switch(opcion1){
  132.             case 1:
  133.                     while(opcion2 != 3){
  134.                         cout<<"Seleccione Una Opcion:"<<"\n"
  135.                         "1.Registro Pais"<<"\n"
  136.                         "2.Registro Medallas"<<"\n"
  137.                         "3.Salida"<<"\n";
  138.                         cin>>opcion2;
  139.                         switch(opcion2){
  140.                             case 1:
  141.                                     Paises[NumPart];
  142.                                     for(int i = 0; i< NumPart; i++){
  143.  
  144.                                         cout<<"Identidad Pais";
  145.                                         cin<<id;
  146.                                         cout<<"Nombre Pais";
  147.                                         cin>>nom;
  148.                                         cout<<"Numero de Disciplinas";
  149.                                         cin>>disci;
  150.                                         cout<<"Numero de Deportistas";
  151.                                         cin>>depor;
  152.                                         Delegacion Paises[i] = Delegacion(id,nom,disci,depor);
  153.                                     }
  154.                                     cout<<"Totalidad de Paices llenos siga con el registro de las medallas";
  155.                                     opcion2 = 5;
  156.                             break;
  157.                             case 2:
  158.                                     cout<<"Ingrese la identidad del pais";
  159.                                     cin>>idpais;
  160.                                     for(int j = 0; j < NumPart; j++){
  161.                                         if(Delegacion Paises[j].get_IdenPais == idpais){
  162.                                             for(int k = 0;k < 50; k++){
  163.                                                 cout<<"Ingrese la Medalla";
  164.                                                 cin>>med;
  165.                                                 cout<<"Ingrese la Identidad de la Disciplina";
  166.                                                 cin>>discipli;
  167.                                                 Delegacion Paises[j].RegistrarMedalla(med,discipli);
  168.                                             }
  169.                                         }
  170.                                     }
  171.                                     cout<<"Totalidad de medallas ingresadas";
  172.                                     opcion2 = 5;
  173.                             break;
  174.                             default;
  175.                             break;
  176.                         }
  177.                     }
  178.             break;
  179.             case 2:
  180.                     cout<<"Ingrese la identidad del pais a consultar";
  181.                     cin>>idpais2;
  182.                     for(int j = 0; j < NumPart; j++){
  183.                         if(Delegacion Paises[j].get_IdenPais == idpais2){
  184.                             cout<<"El puntaje de este pais es:"<<"\n";
  185.                             Delegacion Paises[j].CalcularPuntajeTotal();
  186.                         }
  187.                     }
  188.                     opcion2 = 5;
  189.             break;
  190.             default:
  191.             break;
  192.         }
  193.  
  194.     }
  195.     return 0;
  196. }
  #2 (permalink)  
Antiguo 07/02/2013, 03:07
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 13 años, 8 meses
Puntos: 8
Respuesta: Clase en c++, no funciona

Si nos dijeras qué error te da...
  #3 (permalink)  
Antiguo 07/02/2013, 09:35
 
Fecha de Ingreso: diciembre-2012
Mensajes: 5
Antigüedad: 12 años
Puntos: 0
Respuesta: Clase en c++, no funciona

Lo que pasa es que al complilar me salen estos errores:
||=== Olimpiadas, Debug ===|
In member function 'int Delegacion::CalcularPuntajeTotal()':
error: expected primary-expression before 'ArregloMedalleria'
error: expected ')' before 'ArregloMedalleria'
error: expected primary-expression before 'get_Medallas'
error: expected ')' before 'get_Medallas'
error: expected primary-expression before 'get_Medallas'
error: expected ')' before 'get_Medallas'

La verdad no entiendo muy bien que es lo que no estoy haciendo bien, en la funcion main tambien hay errores pero creo que so puedo soluccionar los de los metodos esas serian mas faciles.
Se me olvidava estoy trabajando en Code::Blocks.
  #4 (permalink)  
Antiguo 07/02/2013, 14:15
 
Fecha de Ingreso: septiembre-2012
Ubicación: Lima
Mensajes: 46
Antigüedad: 12 años, 3 meses
Puntos: 4
Respuesta: Clase en c++, no funciona

no esta muy facil identificar los errores el Dev C++ me bota como 20 errores, puedes comenzar corrigiendo la linea 96 donde hay varios errores

if(Delegacion get_Medallas().Medalla[i] == 1)

- Delegacion get... si quieres devolver un tipo de dato delegacion tendrias que implementar un constructor copia
- get_Medallas() es una funcion, get_Medallas().Medalla[i] tiene error de sintaxis

es lo que pude entender puedes comenzar por aclarar tu codigo
  #5 (permalink)  
Antiguo 07/02/2013, 15:52
 
Fecha de Ingreso: diciembre-2012
Mensajes: 5
Antigüedad: 12 años
Puntos: 0
Respuesta: Clase en c++, no funciona

Bueno desde la ultima vez he estado trabajando con el algoritmo y esto es lo que me llevo ahora:
Código C++:
Ver original
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. //Declaracion de la Clase.
  5. struct ArregloMedalleria{
  6.     int Medalla;
  7.     int Disciplina;
  8. };
  9. class Delegacion{
  10.     private:
  11.  
  12.     int IdenPais;
  13.     string NomPais;
  14.     ArregloMedalleria Medallas [2][50];
  15.     int NumDisciplinas;
  16.     int NumDeportistas;
  17.  
  18.     public:
  19.     Delegacion();
  20.     Delegacion(int,int);
  21.     Delegacion(int,string,int,int);
  22.  
  23.     void set_IdenPais(int);
  24.     void set_NomPais(string);
  25.     void set_Medallas(int,int);
  26.     void set_NumDisciplinas(int);
  27.     void set_NumDeportistas(int);
  28.     int get_IdenPais();
  29.     string get_NomPais();
  30.     ArregloMedalleria get_Medallas();
  31.     int get_NumDisciplinas();
  32.     int get_NumDeportistas();
  33.     void RegistrarMedalla(int,int);
  34.     int CalcularPuntajeTotal();
  35. };
  36. Delegacion :: Delegacion(){
  37. }
  38. Delegacion :: Delegacion(int med,int disc){
  39.  
  40. }
  41. Delegacion :: Delegacion(int id,string nom,int discip,int depor){
  42.     IdenPais = id;
  43.     NomPais = nom;
  44.     NumDisciplinas = discip;
  45.     NumDeportistas = depor;
  46. }
  47. void Delegacion :: set_IdenPais(int id){
  48.     IdenPais = id;
  49.  
  50.     return;
  51. }
  52. void Delegacion :: set_NomPais(string nom){
  53.     NomPais = nom;
  54.  
  55.     return;
  56. }
  57. void Delegacion :: set_NumDisciplinas(int discip){
  58.     NumDisciplinas = discip;
  59.  
  60.     return;
  61. }
  62. void Delegacion :: set_NumDeportistas(int depor){
  63.     NumDeportistas = depor;
  64.  
  65.     return;
  66. }
  67. void Delegacion :: set_Medallas(int med,int disc){
  68.     for(int i = 0;i < 50; i++){
  69.         Medallas [0][i].Medalla = med;
  70.         Medallas [1][i].Disciplina = disc;
  71.     }
  72.     return;
  73. }
  74. int Delegacion :: get_IdenPais(){
  75.     return IdenPais;
  76. }
  77. string Delegacion :: get_NomPais(){
  78.     return NomPais;
  79. }
  80. int Delegacion :: get_NumDisciplinas(){
  81.     return NumDisciplinas;
  82. }
  83. int Delegacion :: get_NumDeportistas(){
  84.     return NumDeportistas;
  85. }
  86. ArregloMedalleria Delegacion :: get_Medallas(){
  87.     return Medallas[2][50];
  88. }
  89. void Delegacion :: RegistrarMedalla(int med,int disc){
  90.     Delegacion set_Medallas(med,disc);
  91.     return;
  92. }
  93. int Delegacion :: CalcularPuntajeTotal(){
  94.     int Puntaje = 0;
  95.     for(int i = 0; i< 100; i++){
  96.         if(get_Medallas().Medalla == 1){
  97.             Puntaje = Puntaje + 10;
  98.         }else if(get_Medallas().Medalla = 2){
  99.             Puntaje = Puntaje + 5;
  100.         }else if(get_Medallas().Medalla = 3){
  101.             Puntaje = Puntaje + 3;
  102.         }
  103.     }
  104.     return Puntaje;
  105. }
  106.  
  107. int main()
  108. {
  109.     //int NumPart = 0;
  110.     int opcion1 = 5;
  111.     int opcion2 = 5;
  112.     int id;
  113.     string nom;
  114.     int disci;
  115.     int depor;
  116.     Delegacion Paises [100];
  117.     int idpais;
  118.     int med;
  119.     int discipli;
  120.     int idpais2;
  121.  
  122.     //cout<<"Digite el Número de paises participantes: ";
  123.     //cin>>NumPart;
  124.  
  125.     while(opcion1 != 3){
  126.         cout<<"Seleccione Una Opcion:"<<"\n"
  127.         "1.Ingreso de Informacion"<<"\n"
  128.         "2.Resultados"<<"\n"
  129.         "3.Salida"<<"\n";
  130.         cin>>opcion1;
  131.         switch(opcion1){
  132.             case 1:
  133.                     while(opcion2 != 3){
  134.                         cout<<"Seleccione Una Opcion:"<<"\n"
  135.                         "1.Registro Pais"<<"\n"
  136.                         "2.Registro Medallas"<<"\n"
  137.                         "3.Salida"<<"\n";
  138.                         cin>>opcion2;
  139.                         switch(opcion2){
  140.                             case 1:
  141.                                     //Paises[NumPart];
  142.                                     for(int i = 0; i< 100; i++){
  143.  
  144.                                         cout<<"Identidad Pais";
  145.                                         cin>>id;
  146.                                         cout<<"Nombre Pais";
  147.                                         cin>>nom;
  148.                                         cout<<"Numero de Disciplinas";
  149.                                         cin>>disci;
  150.                                         cout<<"Numero de Deportistas";
  151.                                         cin>>depor;
  152.                                         Paises[i] = Delegacion(id,nom,disci,depor);
  153.                                     }
  154.                                     cout<<"Totalidad de Paices llenos siga con el registro de las medallas";
  155.                                     opcion2 = 5;
  156.                             break;
  157.                             case 2:
  158.                                     cout<<"Ingrese la identidad del pais";
  159.                                     cin>>idpais;
  160.                                     for(int j = 0; j < 100; j++){
  161.                                         if(Paises[j].get_IdenPais() == idpais){
  162.                                             for(int k = 0;k < 50; k++){
  163.                                                 cout<<"Ingrese la Medalla";
  164.                                                 cin>>med;
  165.                                                 cout<<"Ingrese la Identidad de la Disciplina";
  166.                                                 cin>>discipli;
  167.                                                 Paises[j].RegistrarMedalla(med,discipli);
  168.                                             }
  169.                                         }
  170.                                     }
  171.                                     cout<<"Totalidad de medallas ingresadas";
  172.                                     opcion2 = 5;
  173.                             break;
  174.                             default:
  175.                             break;
  176.                         }
  177.                     }
  178.             break;
  179.             case 2:
  180.                     cout<<"Ingrese la identidad del pais a consultar";
  181.                     cin>>idpais2;
  182.                     for(int j = 0; j < 100; j++){
  183.                         if(Paises[j].get_IdenPais() == idpais2){
  184.                             cout<<"El puntaje de este pais es:"<<"\n";
  185.                             Paises[j].CalcularPuntajeTotal();
  186.                         }
  187.                     }
  188.                     opcion2 = 5;
  189.             break;
  190.             default:
  191.             break;
  192.         }
  193.  
  194.     }
  195.     return 0;
  196. }

Alfinal lo puedo ejecutar pero no me sale la respuesta correcta, donde sigo mal.
  #6 (permalink)  
Antiguo 08/02/2013, 02:09
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 17 años
Puntos: 606
Respuesta: Clase en c++, no funciona

Diría que el error está en la función "CalcularPuntajeTotal". Revisala porque hay cosas que "no tienen mucho sentido"
__________________
Aviso: No se resuelven dudas por MP!

Etiquetas: c++, clases
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:12.