#include<iostream>
#include"Coleccion.h"
using namespace std;
int main (int argc, char *argv[]) {
int c;
int t;
Coleccion ELECCION_PROCESO1_2018;
cout<<"Cuantos candidatos participan en estas eleciones? ";
cin>>c;
ELECCION_PROCESO1_2018.setCantidad(c);
cout<<endl<<"Cuantos electores iran a votar en estas eleciones? ";
cin>>t;
ELECCION_PROCESO1_2018.setTotalElectores(t);
cout<<endl<<"Los votos fueron: "<<endl;
ELECCION_PROCESO1_2018.NumerosRand(t);
cout<<endl;
cout<<ELECCION_PROCESO1_2018.toString()<<endl;
cout<<"El candidato en la posicion "<<ELECCION_PROCESO1_2018.mayorVotos()<<" obtuvo el mayor numero de votos."<<endl<<endl;
ELECCION_PROCESO1_2018.igualar(); ELECCION_PROCESO1_2018.ordenaAscendente();
cout<<ELECCION_PROCESO1_2018.toStringOrdenado()<<endl;
cout<<ELECCION_PROCESO1_2018.toStringMayor()<<endl;
cout<<endl<<"Hay ganador (0=No / 1=Si): "<<ELECCION_PROCESO1_2018.hayGanador()<<endl;
cout<<endl<<"El abstencionismo de las elecciones fue de: "<<ELECCION_PROCESO1_2018.abstencionismo()<<endl<<endl;
ELECCION_PROCESO1_2018.declaracionGanador();//Aquí no entiendo porque me imprime el if y el else al mismo tiempo.
#include<iostream>
#include<sstream>
#include<time.h>
#include<stdlib.h>
#include<conio.h>
using namespace std;
//Punto #1
class Coleccion{
private:
int vector[100];
int vec[100];
int tam;
int can;
int total;
public:
//Punto #2
Coleccion(){
can=0;
tam=100;
for(int i=0;i<tam;i++)
{
vector[i]=0;
}
}
Coleccion(int n){
can=0;
tam= n;
for(int i=0;i< tam;i++)
vector[i]=0;
}
void setCantidad(int can){
if ((can < this->tam)&&(can >= 0))
this->can = can;
}
void setTotalElectores(int total){
this->total = total;
}
int getCantidad(){
return can;
}
int getTotalElectores(){
return total;
}
int getTamano(){
return tam;
}
~Coleccion(){
cout<<endl<<"~Proceso terminado~"<<endl;
}
//Punto #3
void NumerosRand(int total){
for(int i=0;i<can;i++){
if(total>0 && i<can){
srand(time(NULL));
vector[i]=rand()%total+1;
total-=vector[i];
}
cout<<vector[i]<<" ";
}
}
//Punto #4
string toString(){
stringstream s;
s<<endl<< "<<Votos>>"<<endl;
for(int i=0;i<can;i++) {
s<< "El candidato "<<i+1<<" tiene: "<<vector[i]<<" votos"<<endl;
}
return s.str();
}
//Punto #5
int mayorVotos(){
int mayor=vector[0];
int posicion=1;
for(int i=1; i<can; i++){
if(mayor<vector[i]){
mayor=vector[i];
posicion+=i;
}
return posicion;
}
}
//Punto #6
void igualar(){
int j=0;
for(int i=0;i<can;i++){
vec[j]=vector[i];
j++;
}
}
void ordenaAscendente(){
int aux;
for (int i=can-1; i>0; i--){
for(int j=0; j<i; j++){
if(vec[j] > vec[j+1]){
aux = vec[j];
vec[j] = vec[j+1];
vec[j+1] = aux;
}
}
}
}
string toStringOrdenado(){
stringstream s;
s<<endl<< "<<Votos en orden ascendente>>"<<endl;
for(int j=0;j<can;j++){
s<<"Los votos del candidato "<<j+1<<" son: "<<vec[j]<<endl;
}
return s.str();
}
//Punto #7
string toStringMayor(){
stringstream s;
s<<endl<< "<<Posiciones con el 30% o mas del total de los votos>>"<<endl;
for(int i=0;i<can;i++){
if(vector[i]>=total*0.3){
s<<i+1<<" / ";
}
}
return s.str();
}
//Punto #8
bool hayGanador(){
int i=0;
if(vector[i]>=total*0.4){
return true;
}
else {
return false;
}
}
//Punto #9
int totalVotos() {
int suma=0;
for(int i=0; i<can; i++)
suma += vector[i];
return suma;
}
int abstencionismo(){
return getTotalElectores()-totalVotos();
}
//Punto #10
int declaracionGanador(){
int mayor2=0;
int j=0;
if(hayGanador()==true){
cout<<"El ganador es el candidato: "<<mayorVotos()<<endl;
}
else{
for(int i=0;i<can;i++){
if(vec[j=can-2]==vector[i])
mayor2=i+1;
}
}
cout<<endl<<"Los dos participantes que van a la segunda ronda son: "<<mayorVotos()<<" y "<<mayor2<<"."<<endl;
}
string toStringCompara(){
stringstream s;
s<<endl<<"<<Datos de la eleccion>>"<<endl;
s<<"Cantidad: "<<can<<endl;
s<<"Total de votos: "<<totalVotos()<<endl;
s<<"Candidato ganador: "<<mayorVotos()<<endl;
s<<"Abstencionismo: "<<abstencionismo()<<endl;
return s.str();
}
};