Viernes 8 de Noviembre de 2024, 20:47
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
optimizar este codigo
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: optimizar este codigo (Leído 2161 veces)
luchojimenez
Miembro activo
Mensajes: 56
optimizar este codigo
«
en:
Domingo 27 de Junio de 2010, 22:45 »
0
la verdad que navegando por ahi hice un salpicon de lo que encontre en la web sobre el problema d e las fechas ,este codigo lo que trata de hacer es decir la edad en base ala fecha d e nacimiento, yo utilice la fecha del sistema como referencia para sacar la edad(utilice la libreria time.h) , pero todavia tengo un inconveniente cuando la persona tiene menos de un año quiero que la edad en meses sea limpia pero todavia he tenido dificultades , la verdad es que el problema le invertido bastante tiempo, me gustaria que me echaran una manito para darle el toque final
Código: C++
#include <string.h>
#include <stdlib.h>
#include<time.h>
#include<stdio.h>
#include <iostream>
using
namespace
std
;
struct
Time
{
int
d,m,y
;
}
;
struct
Time horalocal
(
)
{
struct
Time mt
;
struct
tm
*
local
;
time_t
t
;
t
=
time
(
NULL
)
;
local
=
localtime
(
&
t
)
;
mt.
d
=
local
-
>
tm_mday
;
mt.
m
=
local
-
>
tm_mon
+
1
;
mt.
y
=
local
-
>
tm_year
+
1900
;
return
mt
;
}
float
fechanac
(
struct
Time t
)
{
struct
Time h
;
float
year
;
h
=
horalocal
(
)
;
year
=
h.
y
-
t.
y
;
if
(
h.
y
-
t.
y
>
1
)
{
if
(
h.
m
<
t.
m
)
year
--
;
else
if
(
h.
m
==
t.
m
&&
h.
d
<
t.
d
)
year
--
;
}
else
if
(
(
h.
y
-
t.
y
>
0
)
&&
(
h.
y
-
t.
y
<=
1
)
)
{
if
(
h.
m
>
t.
m
)
{
year
=
h.
m
-
t.
m
;
cout
<<
"ntienes "
<<
year
<<
" mesesn"
;
}
else
if
(
t.
m
>
h.
m
)
{
year
=
t.
m
-
h.
m
;
cout
<<
"ntienes "
<<
year
<<
" mesesn"
;
}
}
return
year
;
}
void
nombre
(
)
{
system
(
"color 75"
)
;
cout
<<
"nnn"
;
cout
<<
" ==========================="
<<
endl
;
cout
<<
" = Programa Para ="
<<
endl
;
cout
<<
" = Saber ="
<<
endl
;
cout
<<
" = LA Edad ="
<<
endl
;
cout
<<
" ==========================="
<<
endl
;
cout
<<
" By Powered Luis Alfonso Jimenez"
<<
"nnnn"
<<
endl
;
system
(
"PAUSE"
)
;
system
(
"cls"
)
;
}
int
main
(
)
{
char
res
;
do
{
nombre
(
)
;
system
(
"color 74"
)
;
struct
Time fech
;
cout
<<
"nnintroduce el dia en que naciste"
<<
endl
;
cout
<<
"==================================="
<<
endl
;
cin
>>
fech.
d
;
cout
<<
"ahora el mes (un numero 1-12)"
<<
endl
;
cout
<<
"==================================="
<<
endl
;
cin
>>
fech.
m
;
cout
<<
"ahora el anio"
<<
endl
;
cout
<<
"==================================="
<<
endl
;
cin
>>
fech.
y
;
if
(
fechanac
(
fech
)
<
1
)
{
cout
<<
"nnTienes "
<<
fechanac
(
fech
)
<<
" meses........nnn"
<<
endl
;
}
if
(
(
fechanac
(
fech
)
>
0
)
&&
(
fechanac
(
fech
)
<
30
)
)
{
cout
<<
"nnTienes "
<<
fechanac
(
fech
)
<<
" años........nnn"
<<
endl
;
}
else
if
(
(
fechanac
(
fech
)
>
30
)
&&
(
fechanac
(
fech
)
<
40
)
)
{
cout
<<
"nnTienes "
<<
fechanac
(
fech
)
<<
" años..... y estas en el tercer escalon picarooooon...nnn"
<<
endl
;
}
else
if
(
(
fechanac
(
fech
)
>=
40
)
&&
(
fechanac
(
fech
)
<=
50
)
)
{
cout
<<
"nnTienes "
<<
fechanac
(
fech
)
<<
" anios..... y estas en el cuarto escalon picarooooon...n...Todo lo que sube tienen caer jajajajannn"
<<
endl
;
}
else
if
(
fechanac
(
fech
)
>=
50
)
{
cout
<<
"nnTienes "
<<
fechanac
(
fech
)
<<
" anios..... y estas en la tercera edad picarooooon...n...Perdona que te lo diga pero hueles camajonnnn"
<<
endl
;
}
getchar
(
)
;
cout
<<
"nnnnn Si deseas continuar into S/N"
<<
endl
;
cin
>>
res
;
system
(
"pause"
)
;
system
(
"cls"
)
;
}
while
(
(
res
==
's'
)
||
(
res
==
'S'
)
)
;
return
0
;
}
Tweet
czealt
Miembro activo
Mensajes: 28
Re: optimizar este codigo
«
Respuesta #1 en:
Martes 29 de Junio de 2010, 04:06 »
0
Hola, le hice algunos cambios a tu codigo:
Código: C++
#include <cstring> // en C++ equivale a string.h
#include <cstdlib>
#include <ctime>
#include <cstdio>
#include <iostream>
using
namespace
std
;
struct
Time
{
int
d,m,y
;
}
;
struct
Time horalocal
(
)
{
struct
Time mt
;
struct
tm
*
local
;
time_t
t
;
t
=
time
(
NULL
)
;
local
=
localtime
(
&
t
)
;
mt.
d
=
local
-
>
tm_mday
;
mt.
m
=
local
-
>
tm_mon
+
1
;
mt.
y
=
local
-
>
tm_year
+
1900
;
return
mt
;
}
enum
{
ANIOS,MESES
}
;
// tipos de valores devueltos por fechanac()
int
val_dev
;
// almacena el tipo de valor devuelto por fechanac()
float
fechanac
(
struct
Time t
)
{
struct
Time h
;
float
year
;
val_dev
=
ANIOS
;
h
=
horalocal
(
)
;
year
=
h.
y
-
t.
y
;
if
(
year
>
1
)
{
if
(
h.
m
<
t.
m
)
year
--
;
else
if
(
h.
m
==
t.
m
&&
h.
d
<
t.
d
)
year
--
;
}
else
if
(
(
year
>=
0
)
&&
(
year
<=
1
)
)
{
// calculo de los meses transcurridos
int
meses
=
h.
m
-
t.
m
;
if
(
year
==
1
)
meses
+
=
12
;
if
(
meses
<
12
)
{
year
=
meses
;
val_dev
=
MESES
;
}
}
return
year
;
}
void
nombre
(
)
{
system
(
"color 75"
)
;
cout
<<
"nnn"
;
cout
<<
" ==========================="
<<
endl
;
cout
<<
" = Programa Para ="
<<
endl
;
cout
<<
" = Saber ="
<<
endl
;
cout
<<
" = LA Edad ="
<<
endl
;
cout
<<
" ==========================="
<<
endl
;
cout
<<
" By Powered Luis Alfonso Jimenez"
<<
"nnnn"
<<
endl
;
system
(
"PAUSE"
)
;
system
(
"cls"
)
;
}
int
main
(
)
{
char
res
;
do
{
nombre
(
)
;
system
(
"color 74"
)
;
struct
Time fech
;
cout
<<
"nnintroduce el dia en que naciste"
<<
endl
;
cout
<<
"==================================="
<<
endl
;
cin
>>
fech.
d
;
cout
<<
"ahora el mes (un numero 1-12)"
<<
endl
;
cout
<<
"==================================="
<<
endl
;
cin
>>
fech.
m
;
cout
<<
"ahora el anio"
<<
endl
;
cout
<<
"==================================="
<<
endl
;
cin
>>
fech.
y
;
float
edad
=
fechanac
(
fech
)
;
if
(
val_dev
==
MESES
)
{
cout
<<
"nnTienes "
<<
edad
<<
" meses........nnn"
<<
endl
;
}
else
{
cout
<<
"nnTienes "
<<
edad
<<
" años........"
;
if
(
(
edad
>
0
)
&&
(
edad
<
30
)
)
{
cout
<<
"........nnn"
<<
endl
;
}
else
if
(
(
edad
>=
30
)
&&
(
edad
<
40
)
)
{
cout
<<
" y estas en el tercer escalon picarooooon...nnn"
<<
endl
;
}
else
if
(
(
edad
>=
40
)
&&
(
edad
<=
50
)
)
{
cout
<<
" y estas en el cuarto escalon picarooooon...n...Todo lo que sube tienen caer jajajajannn"
<<
endl
;
}
else
if
(
edad
>=
50
)
{
cout
<<
" y estas en la tercera edad picarooooon...n...Perdona que te lo diga pero hueles camajonnnn"
<<
endl
;
}
}
getchar
(
)
;
cout
<<
"nnnnn Si deseas continuar into S/N"
<<
endl
;
cin
>>
res
;
system
(
"pause"
)
;
system
(
"cls"
)
;
}
while
(
(
res
==
's'
)
||
(
res
==
'S'
)
)
;
return
0
;
}
...y creo que ahora ya funciona bien
luchojimenez
Miembro activo
Mensajes: 56
Re: optimizar este codigo
«
Respuesta #2 en:
Martes 29 de Junio de 2010, 16:48 »
0
hombre gracias hermano, eso de las librerias no me lo sabia
luchojimenez
Miembro activo
Mensajes: 56
Re: optimizar este codigo
«
Respuesta #3 en:
Martes 29 de Junio de 2010, 16:50 »
0
hermano me podria explicar lo que hizo con ese enum{ANIOS,MESES} y Ese int val_dev
czealt
Miembro activo
Mensajes: 28
Re: optimizar este codigo
«
Respuesta #4 en:
Miércoles 30 de Junio de 2010, 01:25 »
0
La palabra reservada enum se usa para definir datos del tipo enumerado. Como por ejemplo:
Código: C
enum
DIA
{
Domingo
,
Lunes
,
Martes
,
Miercoles
,
Jueves
,
Viernes
,
Sabado
}
;
enum
{
FALSE
,
TRUE
}
;
enum
{
NUM1
=
3
,
NUM2
,
NUM3
}
;
/*
En el primer caso el compilador asigna por defecto el valor 0 a Domingo, 1 a Lunes, y asi sucesivamente. Lo mismo en el segundo caso. En el tercer ejemplo se asigna el valor 3, 4 y 5 a NUM1, NUM2 Y NUM3 respectivamente. */
En C las constantes definidas con enum son de tipo int, por consiguiente estas constantes pueden utilizarse en cualquier lugar donde se utilizaria un valor de tipo int, por ejemplo:
Código: C
int
dia
=
Lunes
;
Espero haber resuelto tus dudas.
Saludos.
luchojimenez
Miembro activo
Mensajes: 56
Re: optimizar este codigo
«
Respuesta #5 en:
Jueves 1 de Julio de 2010, 00:32 »
0
osea hermano que con enum es posible almacenar una variable no importa si esta,esta dentro de funcion y no se ve afectada al parametrizar y referenciar la funcion,es posible atraves de enum devolver mas de una valor en una funcion de tipo int o float ,chanfle todos los dias se aprende algo, estoy adentrandome en este lenguaje y todos los dias aprendo algo nuevo , muchas gracias hermano por tener la disponibilidad
luchojimenez
Miembro activo
Mensajes: 56
Re: optimizar este codigo
«
Respuesta #6 en:
Jueves 1 de Julio de 2010, 00:47 »
0
en ultima enum es como un arreglo donde los nombres seria los nombres de variables y el arreglo si no se dice lo contrario comenzaria 0 has ta donde le indiquemos en este caso enum{anios,meses} a anio le correspondia el 0 y a meses el 1 es como declarar variables y asignar valores al tiempo ,pero como mas adelante se le asigna un valor variable toma el valor variable, meses, pero antes dijimos que si tm <12 entonces year=meses
douglasloza
Nuevo Miembro
Mensajes: 2
librería <ctime>
«
Respuesta #7 en:
Jueves 22 de Julio de 2010, 05:26 »
0
Hola!
Soy relativamente nuevo en la programación en C++, utilizando el Dev-C++... y pues me han pedido que haga un programa que muestre un calendario y estube indagando sobre el tema y al parecer necesito de la librería <ctime> la funcion mktime... pero no tengo ni idea de como utilizarla, he buscado codigos, tutos, ejemplos, etc, etc y no he encontrado nada productivo, bueno productivo si, pero no le entiendo, si alguien me pudiera ayudar se lo agradecería mucho!!
slds!
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
optimizar este codigo