Foros del Web » Programación para mayores de 30 ;) » C/C++ »

No lee un char :S

Estas en el tema de No lee un char :S en el foro de C/C++ en Foros del Web. Buenas a todos se que esta pregunta es un poco tonta, pero e estado intentando de todas maneras y no logro(cambiado de lugar, gets por ...
  #1 (permalink)  
Antiguo 21/06/2009, 09:06
 
Fecha de Ingreso: enero-2009
Mensajes: 53
Antigüedad: 15 años, 3 meses
Puntos: 1
No lee un char :S

Buenas a todos se que esta pregunta es un poco tonta, pero e estado intentando de todas maneras y no logro(cambiado de lugar, gets por scanf o cin,etc)

Código codigo:
Ver original
  1. #include <iostream.h>
  2. #include <iostream.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <conio.h>
  6. #include <conio.c>
  7.  
  8. struct fecha
  9. {
  10.    int dd;
  11.    int mm;
  12.    char aaaa[4];
  13. };
  14.  
  15. struct direccion
  16. {
  17.    char dir[50];
  18.    char disto[50];
  19.    char prov[50];
  20.    char dpto[50];
  21.    char pais[50];
  22. };
  23.  
  24. struct persona
  25. {
  26.    char cod[5];
  27.    char ap[40];
  28.    char am[20];
  29.    char nom[50];
  30.    char sex[2];
  31.    int telf;
  32.    fecha fnac;
  33.    direccion dire;
  34. };
  35.  
  36.  
  37. int menu();
  38. void lecturapers(persona **p,int *dim,int *error);
  39. void mostrarpers(persona *p,int dim,int error);
  40.  
  41.  
  42. //Principal
  43. //*********
  44. int main()
  45. {     persona *p;
  46.       int opcion,np,opbus,e,pos;
  47.       char cod[5],dato[50];
  48.       textbackground(15);
  49.       textcolor(0);
  50.       do{
  51.          opcion=menu();
  52.          switch(opcion)
  53.          {
  54.             case 1: lecturapers(&p,&np,&e);
  55.                     break;
  56.             case 2: mostrarpers(p,np,e);
  57.                     break;
  58.            
  59.                                
  60.          }
  61.       }while(opcion);
  62.  
  63.      
  64.       return 0;
  65. }
  66.  
  67. //Menu de Opciones
  68. //****************
  69. int menu()
  70. {   int op,x,y,error=0;
  71.  
  72.     x=22;
  73.     y=5;
  74.   do{
  75.        system("cls");
  76.        gotoxy(x+10,y-2);cout<<"DIRECTORIO TELEFONICO";
  77.        gotoxy(x+10,y-1);cout<<"---------------------";
  78.        gotoxy(x,y);  cout<<"**************************************";
  79.        gotoxy(x,y+1);cout<<"*          MENU PRINCIPAL            *";
  80.        gotoxy(x,y+2);cout<<"*   Ingresar Personas..........[1]   *";
  81.        gotoxy(x,y+3);cout<<"*   Mostrar Personas...........[2]   *";
  82.        
  83.        if(error==1)
  84.        {
  85.           gotoxy(x+10,y+11);textcolor(RED);cout<<"Operacion Invalida";textcolor(0);
  86.        }
  87.        error=1;
  88.        gotoxy(x,y+12);cout<<"ELEGIR OPCION:";cin>>op;
  89.     }while(op<0 || op>10);
  90.    
  91.      
  92.    
  93.     return(op);
  94. }
  95.  
  96. //Lectura de personas
  97. //*******************
  98. void lecturapers(persona **p,int *dim,int *error)
  99. {    FILE *F;
  100.      int i,j,k,l,n,condi=0,condi1=0;
  101.      char op,cod[5],auxap[50];
  102.      system("CLS");
  103.  
  104.      cout<<"Numero de personas que desea ingresar:";cin>>n;
  105.      *p = (struct persona*) malloc (n*sizeof (struct persona));
  106.      if(*p==NULL)
  107.        {
  108.         cout<<"NO HAY ESPACIO..Dimension fuera de rango...\n\n"<<endl;
  109.         system("pause");
  110.         exit(1);
  111.        }  
  112.      F = fopen("D:/trabajo/Agenda.dat","ab+");
  113.      if(F==NULL)
  114.             {
  115.                printf(" No se puede abrir el archivo\n");
  116.                system("pause");
  117.                exit(1);
  118.             }
  119.      for(i=0;i<n;i++)
  120.      {      
  121.             system("CLS");  
  122.      
  123.             gotoxy(5,4);printf("PERSONA %d ",i+1);
  124.             gotoxy(55,5);cout<<"Status:";
  125.             gotoxy(18,7);cout<<"DATOS PERSONASLES:";
  126.             gotoxy(18,8);cout<<"-----------------";
  127.             gotoxy(18,9);cout<<"Nombre(s):";
  128.             gotoxy(50,9);gets((*p+i)->nom);
  129.            gotoxy(18,10);cout<<"Apellido Paterno:";
  130.             gotoxy(50,10);gets((*p+i)->ap);          
  131.             gotoxy(18,11);cout<<"Apellido Materno:";
  132.             gotoxy(50,11);gets((*p+i)->am);
  133.             gotoxy(18,12);cout<<"Sexo(F:Femenino,M:masculino):";
  134.             gotoxy(50,12);gets((*p+i)->sex);
  135.        
  136.              do{
  137.             if(strcmp((*p+i)->sex,"f")==0)
  138.             {
  139.                 strcpy((*p+i)->sex,"F");
  140.                 condi=1;
  141.             }
  142.             else
  143.             {
  144.                 if(strcmp((*p+i)->sex,"m")==0)
  145.                 {  
  146.                    strcpy((*p+i)->sex,"M");
  147.                    condi=1;
  148.                 }
  149.                 else
  150.                 {
  151.                     gotoxy(62,5);textcolor(RED);cout<<"Sexo Invalido";textcolor(0);
  152.                     gotoxy(50,12);gets((*p+i)->sex);
  153.                 }
  154.             }
  155.             }while(condi!=1);
  156.                      
  157.             gotoxy(18,13);cout<<"Fecha de Nac:";
  158.             gotoxy(50,13);cout<<"Dia:";
  159.             gotoxy(54,13);cin>>(*p+i)->fnac.dd;
  160.             do{
  161.                 if((*p+i)->fnac.dd>31 ||(*p+i)->fnac.dd<0)
  162.                 {
  163.                     gotoxy(62,5);textcolor(RED);cout<<"Dia Invalido";textcolor(0);
  164.                     gotoxy(54,13);cin>>(*p+i)->fnac.dd;
  165.                 }
  166.             }while((*p+i)->fnac.dd>31 ||(*p+i)->fnac.dd<0);    
  167.             gotoxy(57,13);cout<<"Mes:";
  168.             gotoxy(61,13);cin>>(*p+i)->fnac.mm;
  169.             do{
  170.                 if((*p+i)->fnac.mm>12 ||(*p+i)->fnac.mm<0)
  171.                 {
  172.                     gotoxy(62,5);textcolor(RED);cout<<"Mes Invalido";textcolor(0);
  173.                     gotoxy(61,13);cin>>(*p+i)->fnac.mm;
  174.                 }
  175.             }while((*p+i)->fnac.mm>12 ||(*p+i)->fnac.mm<0);
  176.             gotoxy(64,13);printf("A%co:",165);
  177.             gotoxy(68,13);cin>>(*p+i)->fnac.aaaa;
  178.           /*  do{
  179.                 if((*p+i)->fnac.aaaa>2009 ||(*p+i)->fnac.aaaa<0)
  180.                 {
  181.                     gotoxy(62,5);textcolor(RED);cout<<"Mes Invalido";textcolor(0);
  182.                     gotoxy(68,13);cin>>(*p+i)->fnac.aaaa;
  183.                  }
  184.             }while((*p+i)->fnac.aaaa>2009 ||(*p+i)->fnac.aaaa<0);  */
  185.             gotoxy(18,14);printf("Desea ocultar su a%co(s/n):",164);
  186.             gotoxy(50,14);cin>>op;
  187.             do{
  188.                 if(op=='s' || op=='S')
  189.                 {
  190.                     strcpy((*p+i)->fnac.aaaa,"*"); //asignar el 0 para los que ocultan su fecha
  191.                      condi=1;    
  192.                 }          
  193.                 else
  194.                 {
  195.                     if(op=='n' || op=='N')
  196.                     {
  197.                     condi=1;  //se mantiene inalterable            
  198.                     }
  199.                     else
  200.                     {
  201.                         gotoxy(62,5);textcolor(RED);cout<<"Opcion Invalida";textcolor(0);
  202.                         gotoxy(50,14);cin>>op;
  203.                     }
  204.                 }
  205.             }while(condi!=1);
  206.              fflush(stdin);
  207.             gotoxy(18,16);cout<<"UBICACION:";
  208.             gotoxy(18,17);cout<<"---------";
  209.             gotoxy(18,18);cout<<"Direccion:";
  210.             gotoxy(50,18);gets((*p+i)->dire.dir);
  211.             gotoxy(18,19);cout<<"Distrito:";
  212.             gotoxy(50,19);gets((*p+i)->dire.disto);
  213.             gotoxy(18,20);cout<<"Provincia:";
  214.             gotoxy(50,20);gets((*p+i)->dire.prov);
  215.             gotoxy(18,21);cout<<"Departamento:";
  216.             gotoxy(50,21);gets((*p+i)->dire.dpto);
  217.             gotoxy(18,22);cout<<"Pais:";
  218.             gotoxy(50,22);gets((*p+i)->dire.pais);
  219.             gotoxy(18,23);cout<<"Telefono:";
  220.             gotoxy(50,23);cin>>(*p+i)->telf;
  221.            
  222.             [B]//General el codigo
  223.             //*****************
  224.             for(j=0;j<2;j++)
  225.             {
  226.                 cod[j]=(*p+i)->ap[j];            
  227.             }
  228.             for(k=0;k<2;k++)
  229.             {
  230.                 cod[j]=(*p+i)->am[k];
  231.                 j++;
  232.             }
  233.             for(l=0;l<1;l++)
  234.             {
  235.                 cod[j]=(*p+i)->nom[l];
  236.             }
  237.             strcpy((*p+i)->cod,cod);
  238.             gotoxy(5,7);cout<<"CODIGO";
  239.             gotoxy(5,8);cout<<"GENERADO:";
  240.             gotoxy(5,9);cout<<(*p+i)->cod; [/B]
  241.             gotoxy(18,25);system("pause");
  242.            
  243.      }
  244.      *dim=n;
  245.      *error=1;  
  246. }  
  247. //Visualizacion de personas
  248. //*************************  
  249. void mostrarpers(persona *p,int dim,int error)
  250. {    //se mostrara dos personas por pantalla
  251.      int i,x,y,z,w;  
  252.      x=8;y=7;
  253.      z=45;w=7;
  254.      system("cls");
  255.      //evita el error de mostrar sin crear
  256.      if(error!=1)
  257.      {
  258.        gotoxy(30,10);printf("'No haz ingresado datos'");
  259.        gotoxy(30,11);printf(" El programa se cerrara");
  260.        gotoxy(40,25);system("pause");
  261.        exit(1);          
  262.      }
  263.      if(p==NULL)
  264.      {
  265.        printf("La Agenda esta vacia...\n\n");
  266.        
  267.      }
  268.      else
  269.      {
  270.        for(i=0;i<dim;i++)
  271.        {  
  272.           gotoxy(29,1);cout<<"VISUALIZACION DE PERSONAS";
  273.           gotoxy(29,2);cout<<"*************************";
  274.           gotoxy(x-3,4);cout<<"Numero de personas:"<<dim;
  275.           gotoxy(x,y-1);cout<<"CODIGO:"<<((p+i)->cod);
  276.           gotoxy(x,y);  cout<<"Nombre(s):"<<((p+i)->nom);
  277.          [B] gotoxy(x,y+11);cout<<"Apellido Paterno:"<<((p+i)->ap);[/B]
  278.           gotoxy(x,y+2);cout<<"Apellido Materno:"<<((p+i)->am);
  279.           gotoxy(x,y+3);cout<<"Sexo:"<<(p+i)->sex;
  280.           gotoxy(x,y+4);cout<<"Telefono:"<<(p+i)->telf;
  281.           gotoxy(x,y+5);printf("Cumplea%cos-Fecha de Nac:",164);
  282.           if(strcmp((p+i)->fnac.aaaa,"*")==0)
  283.           {
  284.               cout<<(p+i)->fnac.dd<<"/"<<(p+i)->fnac.mm<<"(*)";
  285.           }
  286.           else
  287.           {
  288.               cout<<(p+i)->fnac.dd<<"/"<<(p+i)->fnac.mm<<"/"<<(p+i)->fnac.aaaa;
  289.           }
  290.           gotoxy(x,y+6);cout<<"Direccion:"<<((p+i)->dire.dir);
  291.           gotoxy(x,y+7);cout<<"Distrito:"<<((p+i)->dire.disto);
  292.           gotoxy(x,y+8);cout<<"Provincia:"<<(p+i)->dire.prov;
  293.           gotoxy(x,y+9);cout<<"Departamento:"<<(p+i)->dire.dpto;
  294.           gotoxy(x,y+10);cout<<"Pais:"<<(p+i)->dire.pais;
  295.          
  296.           fflush(stdin);
  297.           gotoxy(5,20);cout<<"Se marca (*) cuando la persona quiere ocultar su anio de nacimiento";
  298.           gotoxy(40,25);system("pause");
  299.           system("cls");
  300.        }
  301.      }
  302. }


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

Última edición por xdunkelheitx; 21/06/2009 a las 10:05
  #2 (permalink)  
Antiguo 25/06/2009, 05:35
Avatar de hades87  
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona - España
Mensajes: 3.194
Antigüedad: 16 años, 4 meses
Puntos: 68
Respuesta: No lee un char :S

Y por que lo van a borrar si a otra persona le puede servir?
__________________
No diseñes usando tablas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:35.