You are on page 1of 5

SEMINARIO PARA LA PRCTICA 3

CURSO: ALGORITMO Y ESTRUCTURA DE DATOS I SECCIN: 19C 1.- La Municipalidad de la Molina ha realizado un censo en todo el distrito (10000 personas). Dicho censo tiene como objetivo principal conocer cuantas personas son propietarias y cuantos no lo son. Los datos que se recolectan son: nombre del dueo de casa, tipo de vivienda (1=casa / 2=departamento), estado de la vivienda (1=propia / 2=alquilada) y rea de vivienda. Se desea implementar un sistema que permita almacenar la informacin recolectada en dicho censo. Los datos se ingresaran asignndoles un cdigo nico de 3 dgitos. Dicho programa tambin contar con las opciones de: - Modificacin por ingreso de cdigo
- Reporte El reporte debe mostrar la siguiente informacin: - El porcentaje de personas que tienen casa propia y el porcentaje de personas que tienen casa alquilada. - Los datos de las 3 personas cuya casa propia tenga ms rea. Adems, debido a problemas de organizacin, se observaron casos donde se ha censado 2 o ms veces una misma vivienda. Por lo cual el programa deber contar con una opcin que les permita eliminar los datos repetidos (Considere dato repetido si el nombre y el rea del terreno son iguales) Utilice los mtodos y atributos que crea conveniente, teniendo en cuenta los algoritmos de bsqueda, ordenamiento, eliminacin y modificacin segn lo requiera.

#include <cstdlib> #include <iostream> #include <conio.h> using namespace std; class censo { public: string NOMBRE[6]; int TIPO[6]; int ESTADO[6]; int AREA[6]; int CODIGO[6]; int c; censo() { c=0; for(int i=0;i<6;i++) { NOMBRE[i]= " "; TIPO[i]=0; ESTADO[i]=0; AREA[i]=0; CODIGO[i]=0; } } void registrarDatos() { int aux; for(int i=0;i<6;i++) { cout<<"Ingrese el nombre "<<i+1<<" : "; cin>>NOMBRE[i]; do{ cout<<"Ingrese el tipo "<<i+1<<" : "; cin>>TIPO[i]; }while(TIPO[i]<1 || TIPO[i]>2); do{ cout<<"Ingrese el estado "<<i+1<<" : "; cin>>ESTADO[i]; }while(ESTADO[i]<1 || ESTADO[i]>2); do {

cout<<"Ingrese el area "<<i+1<<" : "; cin>>AREA[i]; }while(AREA[i]<=0); do{ CODIGO[i]= rand()%(999-100+1)+100; aux = buscarCodigo(CODIGO[i],i); }while(aux!=-1); } } int buscarCodigo(int x, int y) { for(int i=0;i<y;i++) { if(x == CODIGO[i]) return i; } return -1; } void mostrarDatos() { for(int i=0;i<6-c;i++) { cout<<NOMBRE[i]<<"\t"<<TIPO[i]<<"\t"<<ESTADO[i]<<"\t"<<AREA[i]<<"\t"<<CODIGO[i]<<endl; } } void modificarDatos(int p) { string nom; int tip, est, ar, cod; cout<<"ingrese los nuevos datos: "; cout<<endl<<" nombre: "; cin>>nom; cout<<endl<<" tipo: "; cin>>tip; cout<<endl<<" estado: "; cin>>est; cout<<endl<<" area: "; cin>>ar; NOMBRE[p]=nom; TIPO[p]=tip; ESTADO[p]= est; AREA[p]= ar; } void procesarPorcentaje() { int cont1=0,cont2=0; for(int i=0;i<6;i++) { if(TIPO[i]+ESTADO[i]==2) cont1++; else if(TIPO[i]==1 && ESTADO[i]==2) cont2++; } cout<<endl<<" % de casa propia: "<<cont1*100.0/10000.0; cout<<endl<<" % de casa alquilada: "<<cont2*100.0/10000.0<<endl<<endl;

} void reportarTresPrimeros() { ordenarDatos(); cout<<"Los datos de los propietarios con mayor area de vivienda son: "<<endl; for(int i=0;i<3;i++) { cout<<NOMBRE[i]<<"\t"<<TIPO[i]<<"\t"<<ESTADO[i]<<"\t"<<AREA[i]<<"\t"<<CODIGO[i]<<endl; } } void ordenarDatos() { string nom; int tip,est,ar,cod; for(int i=0;i<5-c;i++) { for(int j=i+1;j<6-c;j++) { if(AREA[i]<AREA[j]) { nom = NOMBRE[i]; NOMBRE[i] = NOMBRE[j]; NOMBRE[j]= nom; tip = TIPO[i]; TIPO[i] = TIPO[j]; TIPO[j] = tip; est = ESTADO[i]; ESTADO[i] = ESTADO[j]; ESTADO[j] = est; ar = AREA[i]; AREA[i] = AREA[j]; AREA[j] = ar; cod = CODIGO[i]; CODIGO[i] = CODIGO[j]; CODIGO[j] = cod; } } } } void eliminarDatos(int p) { for(int i=p;i<5-c;i++) { NOMBRE[i] = NOMBRE[i+1]; TIPO[i] = TIPO[i+1]; ESTADO[i] = ESTADO[i+1]; AREA[i] = AREA[i+1]; CODIGO[i] = CODIGO[i+1]; } c++; } void aplicarEliminacion() {

int cont = -1, pos; for(int i=0;i<5;i++) { if(AREA[i-c]== AREA[i-c+1]) { cont++; if(cont == 0) pos = i-c; for(int j=pos;j<i-c+1;j++) { if(NOMBRE[i-c+1]== NOMBRE[j]) { eliminarDatos(i-c+1); break; } } } } } }; int main(int argc, char *argv[]) { censo c1; int cod, aux; c1.registrarDatos(); cout<<endl<<endl; c1.mostrarDatos(); cout<<endl<<"Ingrese el codigo a buscar: "; cin>>cod; aux = c1.buscarCodigo(cod,6); if(aux==-1) cout<<endl<<"El codigo no esta registrado"<<endl; else c1.modificarDatos(aux); c1.procesarPorcentaje(); c1.reportarTresPrimeros(); c1.aplicarEliminacion(); cout<<endl<<"Los datos resultantes son: "<<endl<<endl; c1.mostrarDatos(); getch(); return EXIT_SUCCESS; }

You might also like