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 - ReySolARG

#21
Hola soy nuevo en este foro!!! Necesito si me pueden ayudar con esta agenda en C que ya me volvio totalmente loco!!! ja!!!
Hace casi todo bien pero una vez que yo ingrese los datos y le di guardar cuando elijo la opcion de ver contacto me aparece lo que yo ingrese pero si cierro el programa y lo abro no tengo nada!!!
Les Agradeceria mucho si em ayudan!!!! aca les dejo el codigo

Código: c

////////////////////////////////////////agenda//////////////////////////////////////////////////

#include<string.h>
#include<stdio.h>
#include<conio.h>
#include<ctype.h>
#include<stdlib.h>
#include<DOS.H>
#include<time.h>

struct fechanac{
  int dia;
  int mes;
  int ano;
  } fn;

struct a{
  char nombre[10];
  char apellido[10];
  int edad;
  long int tel;
  long int dni;
  char correo[30];
  struct fechanac fn;
  } con[30];


int validarnomap(int);
int validarcorreo (char*);
void main()
{

//----------------------------VARIABLES----------------------------------------------
int op=0,x=0,s=0,o=0,y=0,j=0,p=0,i=0,lgo=0,cont=0,time_t,t;
int vf;
int vff=0,a4=0,a100=0,a400=0,d=0;
long int nro=0;
char string[30];
//-----------------------------ARCHIVO-----------------------------------------
FILE *v;
v=fopen("agendaCRIS.txt","a+");

//-----------------------------REPETICION DEL MENU---------------------------------
do
{
//---------------------------CARGA DE DATOS------------------------------------
x=0;
while (x<2)
{
fscanf (v,"%s",&con[x].nombre);
fscanf (v,"%s",&con[x].apellido);
fscanf (v,"%d",&con[x].edad);
fscanf (v,"%2d/%2d/%4d",&con[x].fn.dia,&con[x].fn.mes,&con[x].fn.ano);
fscanf (v,"%ld",&con[x].tel);
fscanf (v,"%ld",&con[x].dni);
fscanf (v,"%s",&con[x].correo);
x++;
}


//------------------------------MENU--------------------------------------------------



textbackground(RED);
textcolor(WHITE);
clrscr ();


  gotoxy(20,2) ;printf ("|||||||||||||||||||||||||||||||||\n");
  gotoxy(20,3) ;printf ("||           AGENDA            ||\n");
  gotoxy(20,4) ;printf ("|||||||||||||||||||||||||||||||||\n");
  gotoxy(20,5) ;printf ("|| 1_ Ingresar Contacto        ||\n");
  gotoxy(20,6) ;printf ("|| 2_ Ver un contacto          ||\n");
  gotoxy(20,7) ;printf ("|| 3_ Ver todos los contactos  ||\n");
  gotoxy(20,8) ;printf ("|| 4_ Editar Contacto          ||\n");
  gotoxy(20,9) ;printf ("|| 5_ Guardar                  ||\n");
  gotoxy(20,10);printf ("|| 6_ Salir                    ||\n");
  gotoxy(20,11);printf ("|||||||||||||||||||||||||||||||||\n");
printf ("\n");
  gotoxy(20,13);printf ("|||||||||||||||||||||||||||||||||\n");
  gotoxy(20,14);printf ("|| INGRESE OPCION:             ||\n");
  gotoxy(20,15);printf ("|||||||||||||||||||||||||||||||||\n");
  gotoxy(20,20) ;printf("Copyrights@ by CRISTIAN ALLEMAND\n");
  gotoxy(29,21) ;printf("Diciembre 2010\n");
  gotoxy(39,14);scanf ("%d",& op);
printf ("\n\n");


//--------------------------OPERACIONES---------------------------------------------
clrscr();
switch (op)
{
case 1:
  x=0;
  while (x<30)
   {

if(con[x].nombre[x] =='\x0')
  {
printf ("> Contacto Numero %d\n",(x+1));
printf ("> Ingrese Nombre(sin espacios previos):");
scanf ("%s",con[x].nombre);

o=validarnomap(x);
if(o==0)
  {
  printf("                                BIEN ESCRITO\n");
  }
  else
{
printf("                            MAL ESCRIT\n");

  getch();
  clrscr();
  gotoxy(20,4); printf ("|||||||||||||||||||||||||||||||||||||||||");
  gotoxy(20,5); printf ("|| 1_  <+> Volver al menu Principal    ||\n");
  gotoxy(20,6); printf ("|| 2_  <+> Salir                       ||\n");
  gotoxy(20,7); printf ("|||||||||||||||||||||||||||||||||||||||||\n");
  gotoxy(20,8); printf ("|||||||||||||||||||||||||||||||||||||||||\n");
  gotoxy(20,9); printf ("|| INGRESE OPCION:                     ||\n");
  gotoxy(20,10);printf ("|||||||||||||||||||||||||||||||||||||||||\n");
  gotoxy(39,9); scanf("%d",&s);
  if(s==1)
{
x=33;x++;
break;
}
else
   {
   if(s==2)
{
  exit(0);
}

   }
break;
}

//------------------------------
do{
      printf("\nFecha de Nac:\n");
      fflush(stdin);
      printf("Dia: ");
      scanf("%d",&con[x].fn.dia);
      printf("Mes: ");
      scanf("%d",&con[x].fn.mes);
      printf("Año: ");
      scanf("%d",&con[x].fn.ano);
      p=con[x].fn.mes%2;
      if((con[x].fn.mes>0)&&(con[x].fn.mes<13))
{
if(con[x].fn.mes==2)
  {
a4=con[x].fn.ano%4;
a100=con[x].fn.ano%100;
a400=con[x].fn.ano%400;
if(a4==0)
  {
    if(a100==0)
      {
if(a400==0)
  {
d=30;
  }
  else
    {
d=29;
    }
      }
      else
{
d=30;
}
  }
  else
    {
    d=29;
    }
}
  else
    {
if(con[x].fn.mes<8)
  {
    if(p==0)
      {
d=31;
      }
      else
{
d=32;
}
  }
  else
    {
      if(p==0)
{
d=32;
}
else
  {
d=31;
  }
    }
    }
    if(con[x].fn.dia<d)
      {
vf=1;
      }
      else
{
printf("\nFecha no valida.....!!!");
}
   }
   else
{
printf("\nFecha no valida.....!!!");
}
  }while(vf!=1);
      do
{
printf ("> Ingrese numero de telefono: ");
scanf ("%ld",&con[x].tel);
ltoa(con[x].tel,string,10);
nro=validarnro(string);
if(nro!=0)
  {
   printf("                         ERROR....!!!\n");
   vff=1;
  }
  else
    {
    vff=0;
    }
}while(vff!=1);
printf ("> Ingrese DNI: ");
scanf ("%d",&con[x].dni);

o=con[x].dni;
if(o>99999999)
  {
  printf("ERROR !! dni no valido\n");
  }
printf ("> Ingrese correo electronico: ");
scanf ("%s",con[x].correo);
nro=validarcorreo(con[x].correo);
if(nro==0)
  {
  printf("ERROR falta el '@'\n");
  }
  else
    {
    if(nro==1)
      {
      printf("ERROR falta el domino ej:'.com','.com.ar','.net',etc\n");
      }
    }



getch();
clrscr();
   gotoxy(20,4); printf ("|||||||||||||||||||||||||||||||||||||||||");
   gotoxy(20,5); printf ("|| 1_  <+> Volver al menu principal    ||\n");
   gotoxy(20,6); printf ("|| 2_  <+> Salir                       ||\n");
   gotoxy(20,7); printf ("|||||||||||||||||||||||||||||||||||||||||\n");
   gotoxy(20,8); printf ("|||||||||||||||||||||||||||||||||||||||||\n");
   gotoxy(20,9); printf ("|| INGRESE OPCION:                     ||\n");
   gotoxy(20,10);printf ("|||||||||||||||||||||||||||||||||||||||||\n");
   gotoxy(39,9); scanf("%d",&s);

if(s==2)
{
x=33;
}
      }
x++;
   }
   break;



   case 2:
   {
x=0;
printf ("Ingrse numero de contacto que desea ver: ");
scanf  ("%d",&x);
x--;
printf ("\n> Contacto Nun %d\n",(x+1));
printf ("> Nombre: %s\n",con[x].nombre);
printf ("> Apellido: %s\n",con[x].apellido);
printf ("> Edad(A¥os): %d\n",con[x].edad);
printf ("> Fecha de nacimiento: %2d/%2d/%4d\n",con[x].fn.dia,con[x].fn.mes,con[x].fn.ano);
printf ("> Numero de telefono: %d\n",con[x].tel);
printf ("> DNI: %d\n",con[x].dni);
printf ("> Correo electronico: %s\n",con[x].correo);
   }
   getch();
   break;

   case 3:
   {
    x=0;
    while (con[x].nombre[x] !='\x0')
     {
printf ("\n> Contacto Nun %d\n",(x+1));
printf ("> Nombre: %s\n",con[x].nombre);
printf ("> Apellido: %s\n",con[x].apellido);
printf ("> Edad(A¥os): %d\n",con[x].edad);
printf ("> Fecha de nacimiento: %2d/%2d/%4d\n",con[x].fn.dia,con[x].fn.mes,con[x].fn.ano);
printf ("> Numero de telefono: %d\n",con[x].tel);
printf ("> DNI: %d\n",con[x].dni);
printf ("> Correo electronico: %s\n",con[x].correo);
x++;
     }
   }
   getch();
   break;

   case 4:
   {
    x=0;
    printf ("TENER EN CUENTA QUE LOS DATOS VIEJOS SE PERDERAN!!");
    printf ("Ingrese numero de contacto que desea re ingresar:  ");
    scanf ("%d",&x);
    x--;
       printf ("> Ingrese Nombre(sin espacios previos):");
scanf ("%s",con[x].nombre);

o=validarnomap(x);
if(o==0)
  {
  printf("                                BIEN ESCRITO\n");
  }
  else
{
printf("                            MAL ESCRIT\n");

  getch();
  clrscr();
  gotoxy(20,4); printf ("|||||||||||||||||||||||||||||||||||||||||");
  gotoxy(20,5); printf ("|| 1_  <+> Volver al menu Principal    ||\n");
  gotoxy(20,6); printf ("|| 2_  <+> Salir                       ||\n");
  gotoxy(20,7); printf ("|||||||||||||||||||||||||||||||||||||||||\n");
  gotoxy(20,8); printf ("|||||||||||||||||||||||||||||||||||||||||\n");
  gotoxy(20,9); printf ("|| INGRESE OPCION:                     ||\n");
  gotoxy(20,10);printf ("|||||||||||||||||||||||||||||||||||||||||\n");
  gotoxy(39,9); scanf("%d",&s);
  if(s==1)
{
x=33;x++;
break;
}
else
   {
   if(s==2)
{
  exit(0);
}

   }
break;
}

//------------------------------
do{
      printf("\nFecha de Nac:\n");
      fflush(stdin);
      printf("Dia: ");
      scanf("%d",&con[x].fn.dia);
      printf("Mes: ");
      scanf("%d",&con[x].fn.mes);
      printf("Año: ");
      scanf("%d",&con[x].fn.ano);
      p=con[x].fn.mes%2;
      if((con[x].fn.mes>0)&&(con[x].fn.mes<13))
{
if(con[x].fn.mes==2)
  {
a4=con[x].fn.ano%4;
a100=con[x].fn.ano%100;
a400=con[x].fn.ano%400;
if(a4==0)
  {
    if(a100==0)
      {
if(a400==0)
  {
d=30;
  }
  else
    {
d=29;
    }
      }
      else
{
d=30;
}
  }
  else
    {
    d=29;
    }
}
  else
    {
if(con[x].fn.mes<8)
  {
    if(p==0)
      {
d=31;
      }
      else
{
d=32;
}
  }
  else
    {
      if(p==0)
{
d=32;
}
else
  {
d=31;
  }
    }
    }
    if(con[x].fn.dia<d)
      {
vf=1;
      }
      else
{
printf("\nFecha no valida.....!!!");
}
   }
   else
{
printf("\nFecha no valida.....!!!");
}
  }while(vf!=1);
      do
{
printf ("> Ingrese numero de telefono: ");
scanf ("%ld",&con[x].tel);
ltoa(con[x].tel,string,10);
nro=validarnro(string);
if(nro!=0)
  {
   printf("                         ERROR....!!!\n");
   vff=1;
  }
  else
    {
    vff=0;
    }
}while(vff!=1);
printf ("> Ingrese DNI: ");
scanf ("%d",&con[x].dni);

o=con[x].dni;
if(o>99999999)
  {
  printf("ERROR !! dni no valido\n");
  }
printf ("> Ingrese correo electronico: ");
scanf ("%s",con[x].correo);
nro=validarcorreo(con[x].correo);
if(nro==0)
  {
  printf("ERROR falta el '@'\n");
  }
  else
    {
    if(nro==1)
      {
      printf("ERROR falta el domino ej:'.com','.com.ar','.net',etc\n");
      }
    }



getch();
clrscr();
   gotoxy(20,4); printf ("|||||||||||||||||||||||||||||||||||||||||");
   gotoxy(20,5); printf ("|| 1_  <+> Volver al menu principal    ||\n");
   gotoxy(20,6); printf ("|| 2_  <+> Salir                       ||\n");
   gotoxy(20,7); printf ("|||||||||||||||||||||||||||||||||||||||||\n");
   gotoxy(20,8); printf ("|||||||||||||||||||||||||||||||||||||||||\n");
   gotoxy(20,9); printf ("|| INGRESE OPCION:                     ||\n");
   gotoxy(20,10);printf ("|||||||||||||||||||||||||||||||||||||||||\n");
   gotoxy(39,9); scanf("%d",&s);
if(s==1)
   {
   x=33;
   x++;
   }
   if(s==2)
     {
     exit(0);
     }


   }


   getch();
   break;

   case 5:
   {
    x=0;
    while (con[x].nombre[x] !='\x0')
     {
fprintf (v,"%s\n",con[x].nombre);
fprintf (v,"%s\n",con[x].apellido);
fprintf (v,"%2d/%2d/%4d\n",con[x].fn.dia,con[x].fn.mes,con[x].fn.ano);
fprintf (v,"%d\n",con[x].tel);
fprintf (v,"%d\n",con[x].dni);
fprintf (v,"%s\n",con[x].correo);
x++;
     }
   }

   break;
}
//-----------------------------REPETICION DEL MENU---------------------------------
}
while (op !=6);
//----------------------------------FIN----------------------------------------
fclose(v);
}
void espera(long sec)
{

    long inicio, actual;
    time(&inicio) ;
    time(&actual) ;

    while((actual-inicio)<sec)
    {
time(&actual) ;
    }

}



int validarnomap (x)
  {


   int lgo=0,i=0,cont=0, o=0;
   lgo=strlen(con[x].nombre);

   while(i<lgo)
     {
     if(isalpha(con[x].nombre[i]))
       {
cont++;
       }
       i++;
     }

     if(lgo>0 && cont==lgo)
       {
o=0;
return o;   //esta bien escrito
       }
       else
  {
   o=1;
   return o;   //esta mal escrito
  }
}
int validarnro (char* string)
  {
  //printf("Evaluando el contacto %d", x);

   int lgo=0,i=0,cont=0, nro=0;
   lgo=strlen(string);

   while(i<lgo)
     {
     if(isdigit(string[i]))
       {
cont++;
       }
       i++;
     }

     if(lgo>0 && cont==lgo)
       {
nro=0;
return nro;   //esta bien escrito
       }
       else
  {
   nro=1;
   return nro;   //esta mal escrito
  }
}


int validarcorreo(char* correo)
{

  int i, j, flag,x,nro=6;



  j = 0;
  flag = 0; /* <- Buscar la '@' */
  for(i = 0; i < strlen(correo); i++)
  {
    if (flag == 1)
    {
      if (correo[i] == '.')
      {
j = i+1;
break;
      }
    }
    else if (flag == 0)
      if (correo[i] == '@')
flag++; /* <- Buscar el '.' */
  }


    if (flag == 0)
    {
      nro=0;
      return nro; //("No Valido. Falta la @\n");
    }
    else
      {
      nro=1;
      return nro; //("No Valido. Falta el dominio\n");
      }


}