Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Blp en 18 Diciembre 2011, 15:58 pm



Título: Error en el struct, necesito ayuda.
Publicado por: Blp en 18 Diciembre 2011, 15:58 pm
Hola, estoy con un programa y lo único que quiero es crear un array que almacene los resultados de otro array que es igual pero por alguna razón no lo encuentra, al compilar se puede ver el error en la línea 36 que es un bucle for para pasarle los datos pero me dice que gen[l].NVOTOSC no esta declarada sin embargo con result[l].NvotosC no hay ningún problema, si alguien puede encontrar el fallo porque yo ya no se donde esta.

El primer código es el del main y las funciones, en el segundo están declaradas las funciones y los arrays.

Código:
#include "Practica11Modif.h"

//int generales [10]; //************************************************

int main() {

int cens;


int &Pcens = cens;
cout << "¿Cual es el número de ciudadanos censados? " << endl;
cin >> cens;
votacion20N(Pcens);

cout << "Resultados finales de las elecciones 2011" << endl;
cout << endl;
cout << "               " << "Congreso  " << "Senado" << endl;
cout << endl;
cout << "1. PP            " << result[0].NvotosC << "   ----   " << result[0].NvotosS << endl;
cout << "2. PSOE          " << result[1].NvotosC << "   ----   " << result[1].NvotosS << endl;
cout << "3. IU            " << result[2].NvotosC << "   ----   " << result[2].NvotosS << endl;
cout << "4. CiU           " << result[3].NvotosC << "   ----   " << result[3].NvotosS << endl;
cout << "5. PNV           " << result[4].NvotosC << "   ----   " << result[4].NvotosS << endl;
cout << "6. UPiD          " << result[5].NvotosC << "   ----   " << result[5].NvotosS << endl;
cout << "7. BNG           " << result[6].NvotosC << "   ----   " << result[6].NvotosS << endl;
cout << "8. CC-NC-PNC     " << result[7].NvotosC << "   ----   " << result[7].NvotosS << endl;
cout << "9. ERC-RI        " << result[8].NvotosC << "   ----   " << result[8].NvotosS << endl;
cout << "10.Abstenerse    " << result[9].NvotosC << "   ----   " << result[9].NvotosS << endl;



for(int l=0;l<11;l++){ //***************************************************
gen[l].NVOTOSC << result[l].NvotosC;
gen[l].NVOTOSS << result[l].NvotosS;
};

int camara;
int nVotos;
cout << endl;
cout << "Elija una camara: " << endl;
cout << "1. Congreso" << endl;
cout << "2. Senado" << endl;
cin >> camara;
cout << endl;

while (camara < 1 || camara > 2){
cout << "Valor no valido, introduzca de nuevo el valor CAMARA: ";
cin >> camara;
}

cout << "Introduzca el número de votos: " << endl;
cin >> nVotos;
buscarPorNroVotosRecibidos(camara,nVotos);
cout << endl;

int camara1;
cout << endl;
cout << "Elija la camara para saber el partido ganador de las elecciones 2011" << endl;
cout << "1. Congreso" << endl;
cout << "2. Senado" << endl;
cin >> camara1;
buscarMaximo(camara1);

return 0;
}

/* *************************FUNCIONES******************************** */
void votacion20N (int Pcens){

int contador = 1;
int i = 0;
while (i<Pcens){
cout << "Elecciones 2011" << endl;
cout << "Elija una de las siguientes opciones para votar: " <<endl;
cout << endl;
int j=1;
while(j<11){
cout << j << " " << result[j-1].nombre << endl;
j++;
}


cout << endl;
cout << "VOTO [" << contador << "] "<< "de" << " [" << Pcens << "] "<< endl;

cout << "------------------------" << endl;
cout << "*Introduzca su voto para el Congreso de los Diputados: ";
cin >> voto.congreso;
cout << endl;

while (voto.congreso<1||voto.congreso>10){
cout << "Voto no permitido, intentelo de nuevo.";
cout << endl;
cout << endl;
cout << "(*)Introduzca su voto al Congreso de nuevo: ";
cout << endl;
cin >> voto.congreso;
}

int partido;
int &Ppartido = partido;
partido = voto.congreso-1;
mostrarResultadosCongreso(Ppartido);

cout << endl;
cout << endl;
cout << "*Introduzca su voto para el Senado(1): ";
cin >> voto.senadoPRIM;
cout << endl;

while (voto.senadoPRIM<1||voto.senadoPRIM>10){
cout << "Voto no permitido, intentelo de nuevo.";
cout << endl;
cout << endl;
cout << "(*)Introduzca su voto al Senado(1) de nuevo: ";
cout << endl;
cin >> voto.senadoPRIM;
}

int senadoP;
int &PsenadoP = senadoP;
senadoP = voto.senadoPRIM-1;
mostrarResultadosSenadoPRIM(PsenadoP);

cout << endl;
cout << endl;
cout << "*Introduzca su voto para el Senado(2): ";
cin >> voto.senadoSEG;
cout << endl;

while (voto.senadoSEG<1||voto.senadoSEG>10){
cout << "Voto no permitido, intentelo de nuevo.";
cout << endl;
cout << endl;
cout << "(*)Introduzca su voto al Senado(2) de nuevo: ";
cout << endl;
cin >> voto.senadoSEG;
}

int senadoS;
int &PsenadoS = senadoS;
senadoS = voto.senadoSEG-1;
mostrarResultadosSenadoSEG(PsenadoS);

   (result[voto.congreso-1].NvotosC)++;
   (result[voto.senadoPRIM-1].NvotosS)++;
   (result[voto.senadoSEG-1].NvotosS)++;
   
cout << endl;   
cout << endl;
cout << "Resultados de las elecciones 2011: "<< endl;
cout << "-------------------------------------------------------------------" << endl;
resultadosCongreso();
resultadosSenado();
cout << "-------------------------------------------------------------------" << endl;;
i++;
contador ++;
}


};

void mostrarResultadosCongreso (int partido){
    cout << "Usted a votado por el partido " << result[partido].nombre << " para el Congreso de los diputados.";
};

void mostrarResultadosSenadoPRIM (int senadoP){
    cout << "Usted a votado por el partido " << result[senadoP].nombre << " para el Senado(1).";
};

void mostrarResultadosSenadoSEG (int senadoS){
    cout << "Usted a votado por el partido " << result[senadoS].nombre << " para el Senado(2).";
};

void resultadosCongreso(){
cout << "El partido " << result[voto.congreso-1].nombre << " tiene " << result[voto.congreso-1].NvotosC << " en el Congreso de los Diputdos" << endl;
};

void resultadosSenado(){
cout << "El partido " << result[voto.senadoPRIM-1].nombre << " tiene " << result[voto.senadoPRIM-1].NvotosS << " en el Senado(1) " << endl;
cout << "El partido " << result[voto.senadoSEG-1].nombre << " tiene " << result[voto.senadoSEG-1].NvotosS << " en el Senado(2) " << endl;
};

void buscarPorNroVotosRecibidos(int camara, int nVotos){

if (camara==1){
if (result[0].NvotosC > nVotos){
cout << " " << result[0].nombre;
}
if (result[1].NvotosC > nVotos){
cout << " " << result[1].nombre;
}
if (result[2].NvotosC > nVotos){
cout << " " << result[2].nombre;
}
if (result[3].NvotosC > nVotos){
cout << " " << result[3].nombre;
}
if (result[4].NvotosC > nVotos){
cout << " " << result[4].nombre;
}
if (result[5].NvotosC > nVotos){
cout << " " << result[5].nombre;
}
if (result[6].NvotosC > nVotos){
cout << " " << result[6].nombre;
}
if (result[7].NvotosC > nVotos){
cout << " " << result[7].nombre;
}
if (result[8].NvotosC > nVotos){
cout << " " << result[8].nombre;
}
if (result[9].NvotosC > nVotos){
cout << " " << result[9].nombre;
}
if (result[10].NvotosC > nVotos){
cout << " " << result[10].nombre;
}
}

if (camara==2){
if (result[0].NvotosS > nVotos){
cout << " " << result[0].nombre;
}
if (result[1].NvotosS > nVotos){
cout << " " << result[1].nombre;
}
if (result[2].NvotosS > nVotos){
cout << " " << result[2].nombre;
}
if (result[3].NvotosS > nVotos){
cout << " " << result[3].nombre;
}
if (result[4].NvotosS > nVotos){
cout << " " << result[4].nombre;
}
if (result[5].NvotosS > nVotos){
cout << " " << result[5].nombre;
}
if (result[6].NvotosS > nVotos){
cout << " " << result[6].nombre;
}
if (result[7].NvotosS > nVotos){
cout << " " << result[7].nombre;
}
if (result[8].NvotosS > nVotos){
cout << " " << result[8].nombre;
}
if (result[9].NvotosS > nVotos){
cout << " " << result[9].nombre;
}
if (result[10].NvotosS > nVotos){
cout << " " << result[10].nombre;
}
}

};

void buscarMaximo(int camara1){
cout << endl;
if (camara1==1){

cout << endl;
cout << "El ganador de las elecciones en el Congreso es: " << endl;

int mayorC;
int iC;
int repetidoC;

mayorC = result[0].NvotosC;
repetidoC = 1;
int PC = 0;


for (iC=0; iC<11 ;iC++){
if (mayorC < result[iC].NvotosC) {
mayorC = result[iC].NvotosC;
PC=iC;
}

else if (mayorC==result[iC].NvotosC)
repetidoC ++;
}

cout << "Es el "<< result[PC].nombre << " por " << mayorC << " votos." << endl;
}

if (camara1==2){

cout << "El ganador de las elecciones en el Senado es: " << endl;


int mayorS;
int iS;
int repetidoS;

mayorS = result[0].NvotosS;
repetidoS = 1;
int PS = 0;


for (iS=0; iS<11 ;iS++){
if (mayorS < result[iS].NvotosC) {
mayorS = result[iS].NvotosS;
PS=iS;
}
else if (mayorS==result[iS].NvotosS)
repetidoS ++;
}
cout << "Es el "<< result[PS].nombre << " por " << mayorS << " votos." << endl;

}
};

y el fichero de cabecera:

Código:

#ifndef Practica11Modif_h
#define Practica11Modif_h
#include <iostream>
using namespace std;

void votacion20N(int);
void mostrarResultadosCongreso(int);
void mostrarResultadosSenadoPRIM(int);
void mostrarResultadosSenadoSEG(int);
void resultadosCongreso();
void resultadosSenado();
void buscarPorNroVotosRecibidos(int, int);
void buscarMaximo(int);

using namespace std;

struct voto {
  int congreso;
  struct {
    int senadoPRIM;
    int senadoSEG;
   
  };
};

struct resultados {
  char nombre[20];
  int NvotosC;
  int NvotosS;
};

struct voto voto;
struct resultados result[10] = {{"PP", 0, 0}, {"PSOE", 0, 0}, {"IU", 0, 0}, {"CIU", 0, 0}, {"PNV", 0, 0}, {"UPyD", 0, 0}, {"BNG", 0, 0}, {"CC-NC-PNC", 0, 0}, {"ERC-RI", 0, 0}, {"Voto en blanco", 0, 0}};

#endif


Título: Re: Error en el struct, necesito ayuda.
Publicado por: Ferno en 18 Diciembre 2011, 16:40 pm
Es que gen[l].NVOTOSC no esta declarada!!!
Te lo está diciendo el mismo compilador.
C y C++ son lenguajes case sensitive, es decir, hacen diferencia entre mayúsculas y minúsculas!
La variable "a" no es lo mismo que la variable "A".
En tu caso específico, "gen[l].NVOTOSC" no es lo mismo que "gen[l].NvotosC"


Título: Re: Error en el struct, necesito ayuda.
Publicado por: Blp en 18 Diciembre 2011, 17:33 pm
Ok no me había fijado en eso. Esa parte ya está, me compila por lo menos pero me salen dos warnings en la 37 y 38 que es dónde paso los valores de un array al otro ¿está bien hecho?

Aquí dejo la cabecera corregida:
Código:
#ifndef Practica11Modif_h
#define Practica11Modif_h
#include <iostream>
using namespace std;

void votacion20N(int);
void mostrarResultadosCongreso(int);
void mostrarResultadosSenadoPRIM(int);
void mostrarResultadosSenadoSEG(int);
void resultadosCongreso();
void resultadosSenado();
void buscarPorNroVotosRecibidos(int, int);
void buscarMaximo(int);

using namespace std;

struct voto {
  int congreso;
  struct {
    int senadoPRIM;
    int senadoSEG;
   
  };
};

struct resultados {
  char nombre[20];
  int NvotosC;
  int NvotosS;
};

struct generales{
  char nombre[20];
  int NVOTOSC;
  int NVOTOSS;
};

struct voto voto;
struct resultados result[10] = {{"PP", 0, 0}, {"PSOE", 0, 0}, {"IU", 0, 0}, {"CIU", 0, 0}, {"PNV", 0, 0}, {"UPyD", 0, 0}, {"BNG", 0, 0}, {"CC-NC-PNC", 0, 0}, {"ERC-RI", 0, 0}, {"Voto en blanco", 0, 0}};
struct generales gen[10] = {{"PP", 0, 0}, {"PSOE", 0, 0}, {"IU", 0, 0}, {"CIU", 0, 0}, {"PNV", 0, 0}, {"UPyD", 0, 0}, {"BNG", 0, 0}, {"CC-NC-PNC", 0, 0}, {"ERC-RI", 0, 0}, {"Voto en blanco", 0, 0}};

#endif


Título: Re: Error en el struct, necesito ayuda.
Publicado por: Ferno en 18 Diciembre 2011, 17:56 pm
1) ¿Cuál es el warning que te tira?
2) ¿Por qué no pruebas con usar el operador de asignación "="?


Título: Re: Error en el struct, necesito ayuda.
Publicado por: 4rkn63l en 18 Diciembre 2011, 23:12 pm
Usa GenSHi por favor, asi es mas facil ayudarte.