Código codigo:
Ver original
#include <iostream.h> #include <iostream.h> #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <conio.c> struct fecha { int dd; int mm; char aaaa[4]; }; struct direccion { char dir[50]; char disto[50]; char prov[50]; char dpto[50]; char pais[50]; }; struct persona { char cod[5]; char ap[40]; char am[20]; char nom[50]; char sex[2]; int telf; fecha fnac; direccion dire; }; int menu(); void lecturapers(persona **p,int *dim,int *error); void mostrarpers(persona *p,int dim,int error); //Principal //********* int main() { persona *p; int opcion,np,opbus,e,pos; char cod[5],dato[50]; textbackground(15); textcolor(0); do{ opcion=menu(); switch(opcion) { case 1: lecturapers(&p,&np,&e); break; case 2: mostrarpers(p,np,e); break; } }while(opcion); return 0; } //Menu de Opciones //**************** int menu() { int op,x,y,error=0; x=22; y=5; do{ system("cls"); gotoxy(x+10,y-2);cout<<"DIRECTORIO TELEFONICO"; gotoxy(x+10,y-1);cout<<"---------------------"; gotoxy(x,y); cout<<"**************************************"; gotoxy(x,y+1);cout<<"* MENU PRINCIPAL *"; gotoxy(x,y+2);cout<<"* Ingresar Personas..........[1] *"; gotoxy(x,y+3);cout<<"* Mostrar Personas...........[2] *"; if(error==1) { gotoxy(x+10,y+11);textcolor(RED);cout<<"Operacion Invalida";textcolor(0); } error=1; gotoxy(x,y+12);cout<<"ELEGIR OPCION:";cin>>op; }while(op<0 || op>10); return(op); } //Lectura de personas //******************* void lecturapers(persona **p,int *dim,int *error) { FILE *F; int i,j,k,l,n,condi=0,condi1=0; char op,cod[5],auxap[50]; system("CLS"); cout<<"Numero de personas que desea ingresar:";cin>>n; *p = (struct persona*) malloc (n*sizeof (struct persona)); if(*p==NULL) { cout<<"NO HAY ESPACIO..Dimension fuera de rango...\n\n"<<endl; system("pause"); exit(1); } F = fopen("D:/trabajo/Agenda.dat","ab+"); if(F==NULL) { printf(" No se puede abrir el archivo\n"); system("pause"); exit(1); } for(i=0;i<n;i++) { system("CLS"); gotoxy(5,4);printf("PERSONA %d ",i+1); gotoxy(55,5);cout<<"Status:"; gotoxy(18,7);cout<<"DATOS PERSONASLES:"; gotoxy(18,8);cout<<"-----------------"; gotoxy(18,9);cout<<"Nombre(s):"; gotoxy(50,9);gets((*p+i)->nom); gotoxy(18,10);cout<<"Apellido Paterno:"; gotoxy(50,10);gets((*p+i)->ap); gotoxy(18,11);cout<<"Apellido Materno:"; gotoxy(50,11);gets((*p+i)->am); gotoxy(18,12);cout<<"Sexo(F:Femenino,M:masculino):"; gotoxy(50,12);gets((*p+i)->sex); do{ if(strcmp((*p+i)->sex,"f")==0) { strcpy((*p+i)->sex,"F"); condi=1; } else { if(strcmp((*p+i)->sex,"m")==0) { strcpy((*p+i)->sex,"M"); condi=1; } else { gotoxy(62,5);textcolor(RED);cout<<"Sexo Invalido";textcolor(0); gotoxy(50,12);gets((*p+i)->sex); } } }while(condi!=1); gotoxy(18,13);cout<<"Fecha de Nac:"; gotoxy(50,13);cout<<"Dia:"; gotoxy(54,13);cin>>(*p+i)->fnac.dd; do{ if((*p+i)->fnac.dd>31 ||(*p+i)->fnac.dd<0) { gotoxy(62,5);textcolor(RED);cout<<"Dia Invalido";textcolor(0); gotoxy(54,13);cin>>(*p+i)->fnac.dd; } }while((*p+i)->fnac.dd>31 ||(*p+i)->fnac.dd<0); gotoxy(57,13);cout<<"Mes:"; gotoxy(61,13);cin>>(*p+i)->fnac.mm; do{ if((*p+i)->fnac.mm>12 ||(*p+i)->fnac.mm<0) { gotoxy(62,5);textcolor(RED);cout<<"Mes Invalido";textcolor(0); gotoxy(61,13);cin>>(*p+i)->fnac.mm; } }while((*p+i)->fnac.mm>12 ||(*p+i)->fnac.mm<0); gotoxy(64,13);printf("A%co:",165); gotoxy(68,13);cin>>(*p+i)->fnac.aaaa; /* do{ if((*p+i)->fnac.aaaa>2009 ||(*p+i)->fnac.aaaa<0) { gotoxy(62,5);textcolor(RED);cout<<"Mes Invalido";textcolor(0); gotoxy(68,13);cin>>(*p+i)->fnac.aaaa; } }while((*p+i)->fnac.aaaa>2009 ||(*p+i)->fnac.aaaa<0); */ gotoxy(18,14);printf("Desea ocultar su a%co(s/n):",164); gotoxy(50,14);cin>>op; do{ if(op=='s' || op=='S') { strcpy((*p+i)->fnac.aaaa,"*"); //asignar el 0 para los que ocultan su fecha condi=1; } else { if(op=='n' || op=='N') { condi=1; //se mantiene inalterable } else { gotoxy(62,5);textcolor(RED);cout<<"Opcion Invalida";textcolor(0); gotoxy(50,14);cin>>op; } } }while(condi!=1); fflush(stdin); gotoxy(18,16);cout<<"UBICACION:"; gotoxy(18,17);cout<<"---------"; gotoxy(18,18);cout<<"Direccion:"; gotoxy(50,18);gets((*p+i)->dire.dir); gotoxy(18,19);cout<<"Distrito:"; gotoxy(50,19);gets((*p+i)->dire.disto); gotoxy(18,20);cout<<"Provincia:"; gotoxy(50,20);gets((*p+i)->dire.prov); gotoxy(18,21);cout<<"Departamento:"; gotoxy(50,21);gets((*p+i)->dire.dpto); gotoxy(18,22);cout<<"Pais:"; gotoxy(50,22);gets((*p+i)->dire.pais); gotoxy(18,23);cout<<"Telefono:"; gotoxy(50,23);cin>>(*p+i)->telf; [B]//General el codigo //***************** for(j=0;j<2;j++) { cod[j]=(*p+i)->ap[j]; } for(k=0;k<2;k++) { cod[j]=(*p+i)->am[k]; j++; } for(l=0;l<1;l++) { cod[j]=(*p+i)->nom[l]; } strcpy((*p+i)->cod,cod); gotoxy(5,7);cout<<"CODIGO"; gotoxy(5,8);cout<<"GENERADO:"; gotoxy(5,9);cout<<(*p+i)->cod; [/B] gotoxy(18,25);system("pause"); } *dim=n; *error=1; } //Visualizacion de personas //************************* void mostrarpers(persona *p,int dim,int error) { //se mostrara dos personas por pantalla int i,x,y,z,w; x=8;y=7; z=45;w=7; system("cls"); //evita el error de mostrar sin crear if(error!=1) { gotoxy(30,10);printf("'No haz ingresado datos'"); gotoxy(30,11);printf(" El programa se cerrara"); gotoxy(40,25);system("pause"); exit(1); } if(p==NULL) { printf("La Agenda esta vacia...\n\n"); } else { for(i=0;i<dim;i++) { gotoxy(29,1);cout<<"VISUALIZACION DE PERSONAS"; gotoxy(29,2);cout<<"*************************"; gotoxy(x-3,4);cout<<"Numero de personas:"<<dim; gotoxy(x,y-1);cout<<"CODIGO:"<<((p+i)->cod); gotoxy(x,y); cout<<"Nombre(s):"<<((p+i)->nom); [B] gotoxy(x,y+11);cout<<"Apellido Paterno:"<<((p+i)->ap);[/B] gotoxy(x,y+2);cout<<"Apellido Materno:"<<((p+i)->am); gotoxy(x,y+3);cout<<"Sexo:"<<(p+i)->sex; gotoxy(x,y+4);cout<<"Telefono:"<<(p+i)->telf; gotoxy(x,y+5);printf("Cumplea%cos-Fecha de Nac:",164); if(strcmp((p+i)->fnac.aaaa,"*")==0) { cout<<(p+i)->fnac.dd<<"/"<<(p+i)->fnac.mm<<"(*)"; } else { cout<<(p+i)->fnac.dd<<"/"<<(p+i)->fnac.mm<<"/"<<(p+i)->fnac.aaaa; } gotoxy(x,y+6);cout<<"Direccion:"<<((p+i)->dire.dir); gotoxy(x,y+7);cout<<"Distrito:"<<((p+i)->dire.disto); gotoxy(x,y+8);cout<<"Provincia:"<<(p+i)->dire.prov; gotoxy(x,y+9);cout<<"Departamento:"<<(p+i)->dire.dpto; gotoxy(x,y+10);cout<<"Pais:"<<(p+i)->dire.pais; fflush(stdin); gotoxy(5,20);cout<<"Se marca (*) cuando la persona quiere ocultar su anio de nacimiento"; gotoxy(40,25);system("pause"); system("cls"); } } }
intente paso a paso denuevo y al borrar mi generador de codigo logre funcionarlo(lin 220)
pero necesito generar un codigo con las 2 primeras letras de los apellidos y la primera del nombre :S intente hacerle una funcion aparte pero vuelve el error del apellido.espero me peudan ayudar.
Disculpenme ya encontre el error era en la estructura cod[] muy poco espacio le di y afectaba al siguiente q era ap . espero que puedan borrar este post.
gracias