Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - seanagu

#1
Lo que me da:

Carlos Gomez NO puede ser candidato
Carla Robles NO puede ser candidato
Luis Alberto NO puede ser candidato
Fabiana Riez NO puede ser candidato


Lo que debería dar:


Carlos Gomez NO  puede ser candidato (segun requisito de la ciudadania arg)
Carla Robles NO puede ser candidato (según el requisito de la edad)
Luis Alberto  NO puede ser candidato (según el requisito de la residencia en bs as)
Fabiana Riez  puede ser candidato
#2
Estoy recién arrancando con la programación  y como ejercicio tengo que hacer un programa que se fije si las personas ingresadas pueden o no ser candidatos a diputados/senadores. Compila pero el resultado dado es incorrecto.
Según el criterio de la edad me da bien la respuesta de Si o No pero al fijarse si viven en argentina y en la provincia hay un error.
Les dejo el código (en algunas funciones hay parámetros de mas que no uso, después lo arreglo)

Espero que alguien pueda darme una mano. Gracias!

Código (cpp) [Seleccionar]
#include <iostream>
#include <cstdio>
#include <string.h>

#define rutaCandidatos "DatosCandidatos.dat"
#define rutaVive "Vive.dat"

using namespace std;


/* run this program using the console pauser or add your own getch, system("pause") or input loop */

struct candidato {
char nombre[50];
unsigned fechaNacimiento;
char paisCuatro [50];
char puesto [15];

};


struct vive{
char nombre[50];
char pais [50];
char provincia [50];
};

struct NodolistaCandidatos{
candidato info;
NodolistaCandidatos*sgte;
};

struct NodolistaVive{
vive info;
NodolistaVive*sgte;
};


void insertarNodoCandidatosalfinal(NodolistaCandidatos *&lista, candidato a)
{
if (lista==NULL)
{
lista= new NodolistaCandidatos();
lista->info = a;
lista->sgte = NULL;
}
else
{
NodolistaCandidatos *aux=lista;
while (aux->sgte!=NULL)
{
aux= aux->sgte;
}
aux->sgte= new NodolistaCandidatos();

aux = aux->sgte;
aux->info= a;
aux->sgte = NULL;
}
return;
}



void insertarNodoVivealfinal(NodolistaVive *&lista, vive j)
{
if (lista==NULL)
{
lista= new NodolistaVive();
lista->info = j;
lista->sgte = NULL;
}
else
{
NodolistaVive *aux=lista;
while (aux->sgte!=NULL)
{
aux= aux->sgte;
}
aux->sgte= new NodolistaVive();
aux = aux->sgte;
aux->info= j;
aux->sgte = NULL;
}
return;
}




NodolistaCandidatos*crearListaCandidatos (FILE*data)
{ NodolistaCandidatos*Lcandidatos =NULL;
candidato a;
while(fread(&a, sizeof(candidato),1, data))
{ insertarNodoCandidatosalfinal(Lcandidatos, a);

}
fclose(data);
return Lcandidatos;

}



NodolistaVive *crearListaVive(FILE *data)
{
NodolistaVive *lvive=NULL;
vive b;
while (fread(&b, sizeof(vive),1,data))
{
insertarNodoVivealfinal(lvive, b);
}
fclose(data);
return lvive;
}



void DatosMemoria (FILE*candidatos, FILE*vive, NodolistaCandidatos*&listacandidatos, NodolistaVive*&listaVive)
{listacandidatos=crearListaCandidatos (candidatos);
listaVive=crearListaVive(vive);
return;
}





NodolistaCandidatos* BuscarNodoCandidato(NodolistaCandidatos *lista, char nombre [])
{
while (lista)
{
if (lista->info.nombre==nombre)
return lista;
lista= lista->sgte;
}
return lista; }




NodolistaVive* BuscarNodoVive(NodolistaVive*lista, char nombre[])
{
while (lista)
{
if (lista->info.nombre==nombre)
return lista;
lista= lista->sgte;
}
return lista;
}



int edadCandidato(int Fechanacimiento)
{
int z = 2017 - Fechanacimiento / 10000;
return z;
}




bool NoCumpleRequisitos (NodolistaVive*listaVive, NodolistaCandidatos*listacandidatos, char nombre [], char pais[], char paisCuatro [], char provincia [])
{
while (  listaVive!=NULL )
 
  { if(( listaVive-> info.nombre == nombre) &&( (strcmp(listacandidatos->info.paisCuatro, "argentina")==0)))
{

if ( (strcmp(listaVive ->info.provincia, "buenos aires"))==0)
return false; // encuentra el candidato y residio los ultimos 4 años en argentina y reside en buenos aires desde hace 2 años
else
return true;

}
return true;

   }
}

bool puedeSerCandidato (char provincia[], char paisCuatro [], char puesto[], char nombre[], char pais[], NodolistaCandidatos*listacandidatos, NodolistaVive*listaVive)
{  if ( strcmp (puesto, "senador")==0)
 {if (!NoCumpleRequisitos (listaVive, listacandidatos, nombre, pais, paisCuatro, provincia) && edadCandidato ((BuscarNodoCandidato (listacandidatos, nombre))->info.fechaNacimiento)>30)
return true;

else return false;
 }


if ( strcmp (puesto, "diputado")==0)
 {if (!NoCumpleRequisitos(listaVive, listacandidatos, nombre, pais, paisCuatro, provincia) && edadCandidato ((BuscarNodoCandidato (listacandidatos, nombre))->info.fechaNacimiento)>22)
return true;

else
return false;
 }

}





int main() {

candidato c;
FILE* p;
p=fopen(rutaCandidatos,"w");
strcpy(c.nombre,"Carlos Gomez");
c.fechaNacimiento=19670803;
strcpy(c.puesto, "senador");
strcpy(c.paisCuatro,"venezuela");  // pais en el que vivio los ultimos por lo menos 4 años,

fwrite(&c,sizeof(c),1,p);
strcpy(c.nombre,"Carla Robles");
c.fechaNacimiento=20130807;
strcpy(c.puesto, "senador");
strcpy(c.paisCuatro,"argentina");

fwrite(&c,sizeof(c),1,p);
strcpy(c.nombre,"Luis Alberto");
c.fechaNacimiento= 19689612;
strcpy(c.puesto, "diputado");
strcpy(c.paisCuatro,"argentina");

fwrite(&c,sizeof(c),1,p);
strcpy(c.nombre,"Fabiana Riez");
c.fechaNacimiento=19859394;
strcpy(c.paisCuatro,"argentina");
strcpy(c.puesto, "diputado");
fwrite(&c,sizeof(c),1,p);
fclose(p);


vive d;
FILE *f;
f=fopen(rutaVive,"w");
// strcpy(d.pais,"Argentina");
strcpy(d.nombre,"Carlos Gomez");
strcpy(d.provincia, "buenos aires");
fwrite(&d,sizeof(d),1,f);


strcpy(d.nombre,"Fabiana Riez");
strcpy(d.provincia, "buenos aires");
fwrite(&d,sizeof(d),1,f);


strcpy(d.nombre,"Luis Alberto");
strcpy(d.provincia, "cordoba");
fwrite(&d,sizeof(d),1,f);


strcpy(d.nombre,"Carla Robles");
strcpy(d.provincia, "buenos aires");  //provincia en la que residio por lo menos los ultimos dos años
fwrite(&d,sizeof(d),1,f);
fclose(f);


FILE *fcand;
FILE *fviv;
NodolistaVive *lvive=NULL;
NodolistaCandidatos *Lcandidatos =NULL;
NodolistaCandidatos *aux;
bool puede;
//muestro los archivos
if ((fcand =fopen(rutaCandidatos,"r")) && (fviv =fopen(rutaVive,"r")))
{
DatosMemoria(fcand, fviv, Lcandidatos, lvive);
fclose(fcand);
fclose(fviv);
aux = Lcandidatos;
while (aux)
{
puede =puedeSerCandidato(lvive->info.provincia, aux->info.paisCuatro, aux->info.puesto, aux->info.nombre, lvive->info.pais, Lcandidatos, lvive);

if (puede==true)
cout  << aux->info.nombre << " puede ser candidato "  << endl;

if(puede==false)
cout << aux->info.nombre << " NO puede ser candidato "  << endl;
aux= aux->sgte;
}
}

else
cout << "Error al intentar abrir un archivo" << endl;




return 0;
}



· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex