C
#1
Se pueden hacer mejoras a este código (?

El enunciado: Elabore un programa en C que dado el día, el mes y el año imprima cuantos días han transcurrido desde el 1 de enero de 2015 hasta la fecha indicada.

Código PHP:
/*
 * dcount.c
 * 
 * Copyright 2017 Oswell <Oswell@OSWELL-PC>
 * 
 */

#include <stdio.h>

int get_days(int n1int n2);

#define BASE        2015

#define C_END        1
#define C_CONTINUE    0

int main()
{
    
int diamesanioi;
    
    
printf("\n Pon un dia: ");
    
scanf("%i", &dia);
    
printf("\n Pon un mes: ");
    
scanf("%i", &mes);
    
printf("\n Pon un año: ");
    
scanf("%i", &anio);
    
    if(
dia 31 || dia 1)
    {
        
printf("\n [ERROR] Introduciste '%i' como dia invalido."dia);
        return 
C_END;
    }
    else if(
mes 12 || mes 1)
    {
        
printf("\n [ERROR] Introduciste '%i' como mes invalido."mes);
        return 
C_END;
    }
    else if(
anio BASE)
    {
        
printf("\n [ERROR] Introduciste '%i' como año invalido, el año base es '%i'."anioBASE);
        return 
C_END;
    }
    
    
anio-BASE;
    
i*get_days(12BASE);
    
    if(
mes 1)
        
dia dia+i-1+get_days(mes-1anio);
    else if(
mes 2)
        
dia dia+i-1;
    
    
printf("\n Ha transcurrido %i dia%s desde el 1/Enero/%i."diadia "s" ""BASE);
    
    return 
C_CONTINUE;
}

int get_days(int n1int n2)
{
    
// devuelvo la suma de dias de los meses.
    
switch(n1)
    {
        case 
1:
            return 
31;
            break;
        case 
2:
            return ((
n2 4) == 0) ? 60 59// Lo que entendi de wikipedia, un año bisiesto es division 'perfecta' entre 4 y termina en 0.
            
break;
        case 
3:
            return ((
n2 4) == 0) ? 91 90;
            break;
        case 
4:
            return ((
n2 4) == 0) ? 121 120;
            break;
        case 
5:
            return ((
n2 4) == 0) ? 152 151;
            break;
        case 
6:
            return ((
n2 4) == 0) ? 182 181;
            break;
        case 
7:
            return ((
n2 4) == 0) ? 213 212;
            break;
        case 
8:
            return ((
n2 4) == 0) ? 244 243;
            break;
        case 
9:
            return ((
n2 4) == 0) ? 274 273;
            break;
        case 
10:
            return ((
n2 4) == 0) ? 305 304;
            break;
        case 
11:
            return ((
n2 4) == 0) ? 335 334;
            break;
        case 
12:
            return ((
n2 4) == 0) ? 366 365;
            break;
    }
    return ((
n2 4) == 0) ? 366 365;

[Imagen: b_350_20_323957_202743_f19a15_111111.png]

(18/11/2014, 05:47 PM)Neeeeeeeeeel.- escribió: Por qué necesitan una guía para todo? Meté mano y que salga lo que salga... es la mejor forma de aprender.

(16/05/2016, 11:08 PM)kikizon2 escribió: No cabe duda que tienen mierda en vez de cerebro, par de pendejos v:
Responder
#2
Yo utilizaria calculos con Timestamp (Unix Timestamp), podrías buscar sobre aquello
Responder
#3
lo que te dije pajuo, es mejor con time() e.e

Código PHP:
printf("han pasado %i dias desde el 1/1/2015", (((time(NULL) - 1420070400 ) / 60 ) /60) / 24

aun que ahi toma la fecha de tu pc

Anonimo escribió:You could try a combination of strptime and mktime

Código PHP:
struct tm tm;
time_t epoch;
if ( 
strptime(timestamp"%Y-%m-%d %H:%M:%S", &tm) != NULL )
  
epoch mktime(&tm);
else
  
// badness 
Competitive/Face it Pick Up Game (PUG) servidor de prueba: 45.77.94.109:27016 Click para Entrar
[Imagen: b_350_20_5A6C3E_383F2D_D2E1B5_2E3226.png]

(14/08/2015, 10:15 PM)Sugisaki escribió: "El mundo es caotico, irracional e injusto. No tiene ningun significado"
Palabras que desde hace mucho tiempo he buscado para describir, ¿Que es el mundo?
Crab

Código PHP:
if(ayuda && free)
{
    exit();

Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)