Sistema de votación por municipios

#include <iostream> #include <iomanip> #include <vector> #include <cstdio> #define SALARIO 644350 using namespace std; class Municipio { private: string Nombre; // Nombre del municipio uint32_t Poblacion; // Poblacion del municipio uint64_t Auxilio; // Ayuda económica uint32_t Votos; public: Municipio& operator++() { Votos++; return *this; } Municipio operator++(int32_t) { Municipio t = *this; ++*this; return t; } void SetNombre(string sNombre) { Nombre = sNombre; } string GetNombre() { return Nombre; } void SetPoblacion(uint32_t dwPoblacion) { Poblacion = dwPoblacion; } uint32_t GetPoblacion() { return Poblacion; } void SetAuxilio(uint32_t dwAuxilio) { Auxilio = dwAuxilio; } uint32_t GetAuxilio() { return Auxilio; } uint32_t GetVotos() { return Votos; } }; class Candidato { private: string Nombre; int Votos; uint32_t *MunVotados; public: // Operadores de incremento y decremento Candidato& operator++() { Votos++; return *this; } Candidato operator++(int32_t) { Candidato t = *this; ++*this; return t; } void SetNombre(string sNombre) { Nombre = sNombre; } string GetNombre() { return Nombre; } uint32_t GetVotos() { return Votos; } void SetMun(uint32_t n) { MunVotados = new uint32_t[n]; for (uint32_t i = 0; i < n; i++) MunVotados[0] = 0; } void IncMun(uint32_t m) { MunVotados[m]++; } uint32_t GetMun(uint32_t m) { return MunVotados[m]; } ~Candidato() { } }; int main() { vector<Municipio> Mun; vector<Candidato> Cand; int i = 0; while (true) { Mun.resize(i+1); string NombreMun = ""; uint32_t Poblacion = 0; cout << "Ingrese la poblacion del municipio " << i+1 << ", (0 para culminar/cancelar): "; cin >> Poblacion; if (!Poblacion) break; cout << "Ingrese el nombre de un municipio: "; fflush(stdin); cin >> NombreMun; Mun[i].SetNombre(NombreMun); Mun[i++].SetPoblacion(Poblacion); } if (!i) { cout << "\nNo se han introducido municipios."; cin.get(); return 1; } i = 0; cout << endl << endl; while (true) { Cand.resize(i+1); string Nombre; cout << "Ingrese el nombre del candidato " << i+1 << ", (0 para cancelar/culminar): "; cin >> Nombre; if (Nombre == "0") break; Cand[i++].SetNombre(Nombre); } if (!i) { cout << "\nNo se han introducido candidatos."; cin.get(); return 1; } for (int j = 0; j < i; j++) { Cand[j].SetMun(Mun.size()); } fflush(stdin); cout << endl << endl << endl; for (uint32_t j = 0; j < Mun.size()-1; j++) { while (true) { cout << "\n\nVOTACIONES DEL MUNICIPIO " << uppercase << Mun[j].GetNombre() << ", SELECCIONE UN CANDIDATO: \n"; for (uint32_t k = 0; k < Cand.size()-1; k++) { cout << "\t" << k+1 << ". " << Cand[k].GetNombre() << "\n"; } if (j != Mun.size()-1) cout << "\n0. Siguiente Municipio"; else cout << "\n0. Culminar votacion"; cout << "\n\nOpcion: "; uint32_t Opcion; fflush(stdin); cin >> Opcion; if (!Opcion) { break; } else if (Opcion > 0 && Opcion < Cand.size()) { Mun[j]++; Cand[Opcion-1]++; Cand[Opcion-1].IncMun(j); } } } for (uint32_t j = 0; j < Mun.size()-1; j++) { uint32_t Categoria = Mun[j].GetPoblacion() > 500000 ? 1 : Mun[j].GetPoblacion() >= 100000 ? 2:3; uint64_t CalculoAuxilio = Categoria == 1 ? (10000*SALARIO) + (SALARIO * 1/2) : Categoria == 2 ? (6000*SALARIO) + (SALARIO * 1/3) : (4000*SALARIO) + (SALARIO * 1/4); Mun[j].SetAuxilio(CalculoAuxilio); } uint32_t CandidatoGanador = 0; for (uint32_t j = 0; j < Cand.size()-1; j++) { if (Cand[j].GetVotos() > Cand[CandidatoGanador].GetVotos()) CandidatoGanador = j; } cout << endl << endl; for (uint32_t j = 0; j < Cand.size()-1; j++) { cout << Cand[j].GetNombre() << " - " << Cand[j].GetVotos() << " votos."; if (j == CandidatoGanador) cout << " (GANADOR)\n"; else cout << "\n"; } uint32_t MunicipioGanador = 0; for (uint32_t j = 0; j < Mun.size()-1; j++) { if (Mun[j].GetVotos() > Mun[MunicipioGanador].GetVotos()) MunicipioGanador = j; } cout << "\nMunicipio con mayor cantidad de votos: " << Mun[MunicipioGanador].GetNombre(); cout << "\nValor del auxilio electoral:\n\n"; for (uint32_t j = 0; j < Mun.size()-1; j++) { cout << Mun[j].GetNombre() << ": " << Mun[j].GetAuxilio() << "$\n"; } cout << endl << "Porcentaje de votos del candidato ganador por municipios:\n"; for (int j = 0; j < Mun.size()-1; j++) { cout << Mun[j].GetNombre() << ": " << (Cand[CandidatoGanador].GetMun(j)*100)/Cand[CandidatoGanador].GetVotos() << "%\n"; } return 0; }
En un departamento de N municipios se realizan elecciones para gobernador, a las cuales se presentan M candidatos, teniendo en cuenta las siguientes condiciones:
a. Se conoce la votación total obtenida por cada candidato en cada uno de los municipios
b. Cada municipio pertenece a una categoría así:
Categoría 1: Municipios de más de 500.000 habitantes
Categoría 2: Municipios entre 100.000 y 500.000 habitantes
Categoría 3: Municipios de menos de 100.000 habitantes

c. Una vez efectuadas las elecciones El gobierno central reconocerá a cada municipio un Auxilio Electoral en dinero, cuyo valor depende de la categoría del municipio y del total de votos depositados asi:
i. Para municipios de categoría 1 el auxilio será de 10000 Salarios mínimos más MEDIO salario mínimo adicional por cada voto que se haya depositado en el municipio.
ii. Para municipios de categoría 2, el auxilio será de 6000 Salarios mínimos mas UN TERCIO del salario mínimo adicional por cada voto que se haya depositado en el municipio
iii. Para municipios de categoría 3, el auxilio será de 4000 Salarios mínimos más una CUARTA PARTE del salario mínimo por cada voto que se haya depositado en el municipio)

d. El salario mínimo actual es de $644.350

Elabore un algoritmo que haga lo siguiente:
1. Calcular e imprimir la votación total obtenida por cada candidato.
2. Determine el nombre del Gobernador electo.
3. Determine cuál fue el municipio con mayor votación total.
4. Calcular el valor del Auxilio Electoral recibirá cada municipio por parte del gobierno.
5. Para el candidato ganador, determinar qué porcentaje de votos fueron a su favor en cada uno de los municipios.

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.