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
#include <iostream> using namespace std; //Declaracion de la Clase. struct ArregloMedalleria{ int Medalla; int Disciplina; }; class Delegacion{ private: int IdenPais; string NomPais; ArregloMedalleria Medallas [2][50]; int NumDisciplinas; int NumDeportistas; public: Delegacion(); Delegacion(int,int); Delegacion(int,string,int,int); void set_IdenPais(int); void set_NomPais(string); void set_Medallas(int,int); void set_NumDisciplinas(int); void set_NumDeportistas(int); int get_IdenPais(); string get_NomPais(); ArregloMedalleria get_Medallas(); int get_NumDisciplinas(); int get_NumDeportistas(); void RegistrarMedalla(int,int); int CalcularPuntajeTotal(); }; Delegacion :: Delegacion(){ } Delegacion :: Delegacion(int med,int disc){ } Delegacion :: Delegacion(int id,string nom,int discip,int depor){ IdenPais = id; NomPais = nom; NumDisciplinas = discip; NumDeportistas = depor; } void Delegacion :: set_IdenPais(int id){ IdenPais = id; return; } void Delegacion :: set_NomPais(string nom){ NomPais = nom; return; } void Delegacion :: set_NumDisciplinas(int discip){ NumDisciplinas = discip; return; } void Delegacion :: set_NumDeportistas(int depor){ NumDeportistas = depor; return; } void Delegacion :: set_Medallas(int med,int disc){ for(int i = 0;i < 50; i++){ Medallas [0][i].Medalla = med; Medallas [1][i].Disciplina = disc; } return; } int Delegacion :: get_IdenPais(){ return IdenPais; } string Delegacion :: get_NomPais(){ return NomPais; } int Delegacion :: get_NumDisciplinas(){ return NumDisciplinas; } int Delegacion :: get_NumDeportistas(){ return NumDeportistas; } ArregloMedalleria Delegacion :: get_Medallas(){ return Medallas[2][50]; } void Delegacion :: RegistrarMedalla(int med,int disc){ Delegacion set_Medallas(med,disc); return; } int Delegacion :: CalcularPuntajeTotal(){ int Puntaje = 0; for(int i = 0; i< 100; i++){ if(Delegacion get_Medallas().Medalla[i] == 1){ Puntaje = Puntaje + 10; }else if(Delegacion get_Medallas().Medalla[i] = 2){ Puntaje = Puntaje + 5; }else if(Delegacion get_Medallas().Medalla[i] = 3){ Puntaje = Puntaje + 3; } } return Puntaje; } int main() { int NumPart; int opcion1 = 5; int opcion2 = 5; int id; string nom; int disci; int depor; Delegacion Paises; int idpais; int med; int discipli; int idpais2; cout<<"Digite el Número de paises participantes: "; cin>>NumPart; while(opcion1 != 3){ cout<<"Seleccione Una Opcion:"<<"\n" "1.Ingreso de Informacion"<<"\n" "2.Resultados"<<"\n" "3.Salida"<<"\n"; cin>>opcion1; switch(opcion1){ case 1: while(opcion2 != 3){ cout<<"Seleccione Una Opcion:"<<"\n" "1.Registro Pais"<<"\n" "2.Registro Medallas"<<"\n" "3.Salida"<<"\n"; cin>>opcion2; switch(opcion2){ case 1: Paises[NumPart]; for(int i = 0; i< NumPart; i++){ cout<<"Identidad Pais"; cin<<id; cout<<"Nombre Pais"; cin>>nom; cout<<"Numero de Disciplinas"; cin>>disci; cout<<"Numero de Deportistas"; cin>>depor; Delegacion Paises[i] = Delegacion(id,nom,disci,depor); } cout<<"Totalidad de Paices llenos siga con el registro de las medallas"; opcion2 = 5; break; case 2: cout<<"Ingrese la identidad del pais"; cin>>idpais; for(int j = 0; j < NumPart; j++){ if(Delegacion Paises[j].get_IdenPais == idpais){ for(int k = 0;k < 50; k++){ cout<<"Ingrese la Medalla"; cin>>med; cout<<"Ingrese la Identidad de la Disciplina"; cin>>discipli; Delegacion Paises[j].RegistrarMedalla(med,discipli); } } } cout<<"Totalidad de medallas ingresadas"; opcion2 = 5; break; default; break; } } break; case 2: cout<<"Ingrese la identidad del pais a consultar"; cin>>idpais2; for(int j = 0; j < NumPart; j++){ if(Delegacion Paises[j].get_IdenPais == idpais2){ cout<<"El puntaje de este pais es:"<<"\n"; Delegacion Paises[j].CalcularPuntajeTotal(); } } opcion2 = 5; break; default: break; } } return 0; }