Dev - C++ - Ayuda ejercicio C++ arreglos

 
Vista:

Ayuda ejercicio C++ arreglos

Publicado por x (1 intervención) el 30/04/2018 21:01:37
Hola me podrían ayudar a hacer esto en C++

En las elecciones para alcalde de EL PUEBLITO PAISA se han presentado tres candidatos (A, B y C). El pueblito está dividido en 5 zonas de votación. El reporte de votos de las zonas se recibe en orden: primero la zona 1, la 2, etc. Elabore una aplicación que:

a.Forme una matriz de 5 filas y 3 columnas que contenga, en cada fila, los votos reportados por las zonas para cada uno de los tres candidatos.

b.Encuentre el total de votos obtenidos por cada candidato y el porcentaje que éste representa del total.

c.Escriba un mensaje declarando ganador a un candidato, si éste obtuvo más del 50% de la votación, en caso de “empate”, notifíquelo mediante un mensaje.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Ayuda ejercicio C++ arreglos

Publicado por José (2 intervenciones) el 08/05/2018 04:39:44
Esto es muy fácil de hacer con la STL de C++. Create un par de arrays(*) STL uno bidimensional para guardar las votaciones de los distintos candidatos y otro unidimensional para los votos totales que tiene cada candidado.

No voy a hacerte el programa entero, pero si una pequeña guía que espero te sea útil. Lo primero es crear los array "a lo C++" no "a lo C".
1
2
3
4
5
6
7
8
9
#include <array>
 
int main()
{
    const int totalCandidatos = 3;
    const int totalDistritos = 5;
    std::array< std::array<int, totalCandidatos>, totalDistritos> votosTotales;
    std::array<int, totalCandidatos> votosCandidatos;
    //(...)

Con los arrays creados, toca recorrelos para meter los datos. Se puede hacer "a lo C", o "a lo C++" con iteradores. Este bucle recorre toda la matriz que contiene los votos de los distritos y sus candidatos, aprovechamos y metemos los datos que vayamos recogiendo en la matriz de los candidatos

1
2
3
4
5
6
7
8
9
10
11
12
for (auto itCan = begin(votosTotales); itCan != end(votosTotales); ++itCan) {
        int candidatoActual = 0;
        for (auto itDis = begin(*itCan); itDis != end(*itCan); ++itDis) {
 
        //(...) Introducir manualmente las distintas votaciones usando cin/cout
        //Aprovechamos el bucle y añadir la votación al candidato correspondiente
        votosCandidatos.at(candidatoActual) += *itDis;
        candidatoActual++;
        }
    }
    //Código de comparación y mostrar resultado....
}

Llegados a este punto votosCandidatos, contiene los votos totales de cada candidato, sólo falta seleccionar el posible ganador.

(*)Se pueden usar también vectores que es lo más común, pero para estructuras de tamaño fijo como es este caso, es más eficiente el uso de la memoria con arrays. Es mejor pillar buenos hábitos. imagina que un día de estos, en vez de 5 podrían ser 1000000 ;-).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar