elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Ayuda] Fallo de estructura
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Ayuda] Fallo de estructura  (Leído 2,315 veces)
jospar

Desconectado Desconectado

Mensajes: 5



Ver Perfil
[Ayuda] Fallo de estructura
« en: 18 Enero 2015, 17:57 pm »

Buenas, alguien puede decirme el fallo de la funcion leeFecha definida en fecha.c??? El fichero es:
Código:
#include <stdio.h>

struct fecha leeFecha()
{
  printf("Introduzca la fecha en formato dd/mm/aaaa :");
  scanf("%d/%d/%d", &leeFecha.dia, &leeFecha.mes, &leeFecha.año);
}
int compruebaFecha(struct fecha*pFecha)
{
  int resul;
  int bis;
  bis = esBisiesto(*pFecha);
  switch(pFecha->mes)
    {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
      if(pFecha->dia > 31 || pFecha->dia == 0)
resul = 0;
      else
resul = 1;
      break;
    case 4:
    case 6:
    case 9:
    case 11:
      if(pFecha->dia > 30 || pFecha->dia == 0)
resul = 0;
      else
resul = 1;
      break;
    case 2:
      if (bis == 0)
if(pFecha->dia > 28 || pFecha->dia == 0)
  resul = 0;
else
  resul = 1;
      else
if(pFecha->dia > 29 || pFecha->dia == 0)
  resul = 0;
else
  resul = 1;
      break;
    default:
      resul=0;
    }
  return resul;
}
int comparaFecha(struct fecha f1, struct fecha f2)
{
  int resul;
  if(f1.año<f2.año)
    resul=1;
  else if(f1.año>f2.año)
    resul=-1;
  else if(f1.año==f2.año)
    {
      if(f1.mes<f2.mes)
resul=1;
      else if(f1.mes>f2.mes)
resul=-1;
      else if(f1.mes==f2.mes)
{
  if(f1.dia<f2.dia)
    resul=1;
  else if(f1.dia>f2.dia)
    resul=-1;
  else if(f1.dia==f2.dia)
    resul=0;
}
    }
  return resul;
}
void imprimeFecha(struct fecha f)
{
  printf("%d/%d/%d", f.dia, f.mes, f.año);
}
int esBisiesto(struct fecha f)
{
  int resul;
 
  if (0 == (f.año % 4))
    {
      if (0 == (f.año % 100))
{
  if (0 == (f.año % 400))
    resul = 1;
  else
    resul=0;
}
      else
resul = 1;
    }
  else
    resul=0;
  return resul;
}
Por si necesitais saber donde esta la llamada a la funcion os paso tambien estructura.c:
Código:
#include <stdio.h>
#include "fecha.h"
#include "fecha.c"
int main()
{
  struct fecha f1;
  struct fecha f2;
  struct fecha *pf1=NULL;
  struct fecha *pf2=NULL;
  f1 = leeFecha();
  pf1=&f1;
  if (compruebaFecha(pf1) == 0)
    printf("Formato de fecha incorrecto\n");
  else
    {
      f2 = leeFecha();
      pf2=&f2;
      if (compruebaFecha(pf2) == 0)
printf("Formato de fecha incorrecto\n");
      else
{
  if(comparaFecha(f1,f2)>0)
    {
      imprimeFecha(f1);
      printf(" es anterior a ");
      imprimeFecha(f2);
      printf("\n");
    }
  else if(comparaFecha(f1,f2)<0)
    {
      imprimeFecha(f1);
      printf(" es posterior a ");
      imprimeFecha(f2);
      printf("\n");
    }
  else if(comparaFecha(f1,f2)==0)
    {
      imprimeFecha(f1);
      printf(" es igual a ");
      imprimeFecha(f2);
      printf("\n");
    }
}
      if(esBisiesto(f1)==1 && esBisiesto(f2)==1)
printf(AMBAS_BISIESTO);
      else if(esBisiesto(f1)==1 && esBisiesto(f2)==0)
printf(PRIMERA_BISIESTO);
      else if(esBisiesto(f1)==0 && esBisiesto(f2)==1)
printf(SEGUNDA_BISIESTO);
      else if(esBisiesto(f1)==0 && esBisiesto(f2)==0)
printf(NINGUNA_BISIESTO);
    }
  return 0;
}


En línea

La vida es larga y dura, por eso chupame la vida.
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: [Ayuda] Fallo de estructura
« Respuesta #1 en: 18 Enero 2015, 18:53 pm »

¿Puedes decir como está definida la estructura fecha? Es que no la veo por ningún sitio. Por otra parte esto es una aberración:
Código
  1. struct fecha leeFecha()
  2. {
  3.  printf("Introduzca la fecha en formato dd/mm/aaaa :");
  4.  scanf("%d/%d/%d",  &leeFecha???????.dia, &leeFecha???????.mes, &leeFecha???????.año);
  5. }
leeFecha es una función no una estructura... Además la función leeFecha devuelve una estructura tipo fecha y no veo ningún return.

Saludos.


« Última modificación: 18 Enero 2015, 18:55 pm por avesudra » En línea

Regístrate en
jospar

Desconectado Desconectado

Mensajes: 5



Ver Perfil
Re: [Ayuda] Fallo de estructura
« Respuesta #2 en: 18 Enero 2015, 20:51 pm »

Ahhh ya se donde estaba el fallo!! Gracias por el comentario aberracion jajajaja no habia mejor manera de llamarlo!! el fallo es el return y la manera de inicializar la estructura leeFecha como tu has dicho
muchas gracias!
En línea

La vida es larga y dura, por eso chupame la vida.
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: [Ayuda] Fallo de estructura
« Respuesta #3 en: 18 Enero 2015, 22:18 pm »

Ahhh ya se donde estaba el fallo!! Gracias por el comentario aberracion jajajaja no habia mejor manera de llamarlo!! el fallo es el return y la manera de inicializar la estructura leeFecha como tu has dicho
muchas gracias!
Pero leeFecha no es una estructura es una función... ten cuidado con eso, que funcione no quiere decir que esté bien.

Saludos.
En línea

Regístrate en
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con la estructura de boolean
Programación Visual Basic
CRAB 3 3,248 Último mensaje 12 Julio 2005, 20:32 pm
por Crack_X
Ayuda con estructura
Programación C/C++
Mudkipz 3 2,949 Último mensaje 21 Noviembre 2010, 17:15 pm
por Gallu
Fallo al insertar estructura a vector de estructuras
Programación C/C++
Kaxperday 2 1,439 Último mensaje 7 Julio 2015, 16:13 pm
por Kaxperday
ayuda con punteros a estructura
Programación C/C++
abaadoon 1 2,268 Último mensaje 12 Febrero 2016, 04:49 am
por 0xFer
Ayuda en la estructura de mi web
Desarrollo Web
anfgonzalez 7 3,978 Último mensaje 3 Agosto 2016, 08:53 am
por Adrialmend
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines