/******************************************************************************
Welcome to GDB Online.
GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl,
C#, OCaml, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog.
Code, Compile, Run and Debug online from anywhere in world.
*******************************************************************************/
import java.util.ArrayList;
import java.util.Random;
class VotarApp{
public static void main(String[] args){
DB dv = new DB();
votar(dv);
dv.totalizar();
reportar(dv);
}
static void votar(DB dv){
Random ran = new Random();
int i, I;
for (Mesa m: dv.mesas){
I = 1+ran.nextInt(10);
for(i=0; i<I; i++)
m.candidato[ran.nextInt(4)]++;
m.total = m.candidato[0] + m.candidato[1] + m.candidato[2] + m.candidato[3];
}
}
static void reportar(DB dv){
System.out.println("Reporte de mesas\nDep Prov Mesa: C1 C2 Blanco Viciado Total");
for (Mesa m: dv.mesas)
System.out.printf("%3d %4d %2d: %2d %2d %2d %4d %4d\n", m.codigoD, m.codigoP, m.codigoM,
m.candidato[0], m.candidato[1], m.candidato[2], m.candidato[3], m.total);
System.out.println("\nReporte de provincias\nDep Prov Nombre: C1 C2 Blanco Viciado Total");
for (Provincia p: dv.pros)
System.out.printf("%3d %4d %s: %2d %2d %2d %4d %4d\n", p.codigoD, p.codigoP, p.nombre, p.candidato[0], p.candidato[1], p.candidato[2], p.candidato[3], p.total);
System.out.println("\nReporte de departamentos\nDep Nombre: C1 C2 Blanco Viciado Total");
for (Departamento d: dv.deps)
System.out.printf("%3d %s: %2d %2d %2d %4d %4d\n", d.codigoD, d.nombre, d.candidato[0],
d.candidato[1], d.candidato[2], d.candidato[3], d.total);
System.out.println("\nReporte del Perú\nC1 C2 Blanco Viciado Total");
System.out.printf("%2d %2d %2d %4d %4d\n", dv.peru.candidato[0],
dv.peru.candidato[1], dv.peru.candidato[2], dv.peru.candidato[3], dv.peru.total);
if(dv.peru.candidato[0] > dv.peru.candidato[1])
System.out.printf("\nEl presidente electo es: C1\n");
else
if(dv.peru.candidato[0] < dv.peru.candidato[1])
System.out.printf("\nEl presidente electo es: C2\n");
else
System.out.printf("\nAmbos candidatoa merecen ser presidente, por lo que iremos a otra vuelta\n");
}
}
class DB{
Peru peru = new Peru();
ArrayList<Departamento> deps = new ArrayList<>();
ArrayList<Provincia> pros = new ArrayList<>();
ArrayList<Mesa> mesas = new ArrayList<>();
DB(){
deps.add(new Departamento(0, "D0"));
deps.add(new Departamento(1, "D1"));
pros.add(new Provincia(0, 0, "P00"));
pros.add(new Provincia(0, 1, "P01"));
pros.add(new Provincia(1, 0, "P10"));
pros.add(new Provincia(1, 1, "P11"));
pros.add(new Provincia(1, 2, "P12"));
mesas.add(new Mesa(0, 0, 0));
mesas.add(new Mesa(0, 0, 1));
mesas.add(new Mesa(0, 0, 2));
mesas.add(new Mesa(0, 1, 3));
mesas.add(new Mesa(0, 1, 4));
mesas.add(new Mesa(0, 1, 5));
mesas.add(new Mesa(0, 1, 6));
mesas.add(new Mesa(1, 0, 7));
mesas.add(new Mesa(1, 0, 8));
mesas.add(new Mesa(1, 0, 9));
mesas.add(new Mesa(1, 1, 10));
mesas.add(new Mesa(1, 1, 11));
mesas.add(new Mesa(1, 1, 12));
mesas.add(new Mesa(1, 2, 13));
mesas.add(new Mesa(1, 2, 14));
}
void totalizar(){
int coD = -1, coP = -1;
Provincia pr = null;
for (Mesa m: mesas){
if (coD != m.codigoD || coP != m.codigoP){ // Hallar la provincia a sumar
coD = m.codigoD;
coP = m.codigoP;
for (Provincia p: pros)
if(coD == p.codigoD && coP == p.codigoP){
pr = p;
break;
}
}
for(int j=0; j<4; j++) pr.candidato[j] += m.candidato[j];
pr.total += m.total;
}
// totalizar a departamento
coD = -1;
Departamento de = null;
for (Provincia p: pros){
if (coD != p.codigoD){ // Hallar el departamento a sumar
coD = p.codigoD;
for (Departamento d: deps)
if(coD == d.codigoD){
de = d;
break;
}
}
for(int j=0; j<4; j++) de.candidato[j] += p.candidato[j];
de.total += p.total;
}
// totalizar a Perú
for(Departamento d: deps){
for(int j=0; j<4; j++) peru.candidato[j] += d.candidato[j];
peru.total += d.total;
}
}
}
class Peru{
int [] candidato = new int[4];
int total;
}
class Departamento{
int codigoD;
String nombre;
int [] candidato = new int[4];
int total;
Departamento(int codigoD, String nombre){
this.codigoD = codigoD;
this.nombre = nombre;
}
}
class Provincia{
int codigoD, codigoP;
String nombre;
int [] candidato = new int[4];
int total;
Provincia(int codigoD, int codigoP, String nombre){
this.codigoD = codigoD;
this.codigoP = codigoP;
this.nombre = nombre;
}
}
class Mesa{
int codigoD, codigoP, codigoM;
int [] candidato = new int[4];
int total;
Mesa(int codigoD, int codigoP, int codigoM){
this.codigoD = codigoD;
this.codigoP = codigoP;
this.codigoM = codigoM;
}
}