Sábado 14 de Diciembre de 2024, 22:09
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
) »
Comparacion En C
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Comparacion En C (Leído 2286 veces)
dudesl
Nuevo Miembro
Mensajes: 24
Comparacion En C
«
en:
Miércoles 28 de Marzo de 2007, 02:04 »
0
El tema es el siguiente:
Yo tengo una estructura como la siguiente:
Código: Text
typedef struct {int dia;
int mes;
int an; } fecha;/*Fecha*/
typedef struct {char nombre[50];
int codigo;
fecha f;/*Fecha de nacimiento del empleado*/
} emp; /*Empleados*/
El tema es el siguiente, tengo que lograr una función que me compare las posiciones de un arreglo de empleados y me diga cual es el empleado mas joven, usando el campo de la fecha de nacimiento.El arreglo de empleados pasa como parametro a la funcion y la misma debe devolver la posicion en la que se encuentra el empleado mas joven
Me complica el tema que la fecha sea una estructura ya que debo (lo que yo pienso) comparar primero el año, luego el mes y luego el dia y asi posicion por posicion del arreglo. Es todo un tema. Busco un codigo compacto usando todas las caracteristicas de c (solo de c).
Esto es parte de un trabajo practico que tengo que hacer para la universidad y no es que soy vago, es que me mato, solo pido un poquito de ayuda, aunque sea una guia o un consejo. Desde ya gracias.
Tweet
su -
Moderador
Mensajes: 2349
Re: Comparacion En C
«
Respuesta #1 en:
Miércoles 28 de Marzo de 2007, 02:33 »
0
Si sabas como trabajar con tipedef no deberias de tener problema alguno.
No te voy a responder directamente (y espero que nadie lo haga) por eso te pregunto a ver si das con la respuesta:
Como llamas un solo elemente de esa estructura?
Es decir; de aqui:
Código: Text
typedef struct {int dia;
int mes;
int an; } fecha;/*Fecha*
Como tomas el valor de mes?
Como y en que porfa podrias usar un bucle en este codigo?
Si no sabes las respuestas:
http://www.learn-programming.za.net/progra..._c_learn09.html
Google it.
[EDT]
Increible, algo tan simple y no saben hacerlo, jovenes...
(
)
*******PELIGRO LEE ESTO!!*******
There is no place like 127.0.0.1
Conecto luego existo, no conecto luego insisto.
Geo
Miembro de PLATA
Mensajes: 1011
Nacionalidad:
Re: Comparacion En C
«
Respuesta #2 en:
Miércoles 28 de Marzo de 2007, 16:18 »
0
Como menciona su-, no es complicado:
- Recorres el arreglo de estructuras
- GUARDAS en una variable auxiliar el índice del empleado más joven hasta el momento (en la primer iteración toma al primer empleado como el más joven).
- Lo comparas con el siguiente elemento del arreglo.
- Si es más joven, actualizas las variables, si no, continúas con el siguiente.
Cuando termines el ciclo tendrás el índice del más joven.
Suerte.
La imaginación es el límite.
Hardware & Software
|
Mexchip
dudesl
Nuevo Miembro
Mensajes: 24
Re: Comparacion En C
«
Respuesta #3 en:
Jueves 29 de Marzo de 2007, 18:02 »
0
pero la comparacion no se trata de un solo campo si no de los 3 campos, o sea tengo que ver cual de los empleados es mas joven dependiendo los años, si son iguales, comparar dependiendo el mes, si son iguales, comparar dependiendo el dia.
Loco, no es que soy un gil, tengo algo de experiencia en esto, pero por eso estoy ESTUDIANDO......
Geo
Miembro de PLATA
Mensajes: 1011
Nacionalidad:
Re: Comparacion En C
«
Respuesta #4 en:
Viernes 30 de Marzo de 2007, 00:19 »
0
Mh, tienes que intentar cosas tú mismo, podrías por ejemplo empezar con dos de tus estructuras y comparar sus elementos:
Código: Text
struct emp empleado1, empleado2;
// ... código
if ( empleado1.fecha.an < empleado2.fecha.an ) {
// el empleado 1 es más joven
}
Suerte.
La imaginación es el límite.
Hardware & Software
|
Mexchip
dudesl
Nuevo Miembro
Mensajes: 24
Re: Comparacion En C
«
Respuesta #5 en:
Sábado 31 de Marzo de 2007, 21:07 »
0
Miren esto:
Código: Text
int MasJoven (empleado emp[]; int Lim){
int aux=0; int Joven=1;
while (aux<Lim){ //Comienzo del modulo
if ((*emp[aux].f.an <*emp[aux+1].f.an) && (*emp[aux].f.mes < *emp[aux+1].f.mes) && (*emp[aux].f.dia < *emp[aux+1].f.dia) ) Joven=aux;
else Joven=aux+1;
aux++;}
return Joven;} //Fin del modulo
Esta es la estrucutura empleado:
Código: Text
typedef struct{
int dia; int mes; int an;} fecha; //Dia, mes y año
typedef struct{
int codigo; //Codigo del empleado
char NomAp[35]; // Nombre y apellido
fecha f; //fecha de nacimiento del empleado
Ahora, paso a explicar este modulo: Yo necesitaba que me comparara dos estructuras (empleados) y que me devolviera el mas joven. En realidad entraba como parametro un arreglo de empleados y me devolvia la posicion del empleado mas joven.
No encontraba la forma, hasta que me puse hacer grraaaaaaannndeees tablas de condiciones y cosas por el estilo hasta que me di cuenta que la unica condicion que tenia que cumplir el empleado mas joven es que fuera el año, mes y dia menores al del otro empleado. Entonces es ahi cuando entra esa graaaaan condicion del if donde compara el año, el mes y el dia de los empleados..
Creo que lo logre, ahora queda en ustedes decirme si es correcto lo que hice, si lo puedo encarar de otra forma, si hay forma de reducir esa condicion por que es bastante intimidante.
Citar
su- dijo:
Increible, algo tan simple y no saben hacerlo, jovenes...
(
)
que te parece su-?
su -
Moderador
Mensajes: 2349
Re: Comparacion En C
«
Respuesta #6 en:
Sábado 31 de Marzo de 2007, 21:43 »
0
Hmmm...
Tienes 3 empleados:
Código: Text
Empleado año mes dia
Daniel 1997 10 5
Pedro 1976 3 20
Juan 1999 5 10
Como sabes si Daniel es mas joven que Juan (segun tu codigo)?
Intenta hacer una metriz para organizarlo por fechas.
*******PELIGRO LEE ESTO!!*******
There is no place like 127.0.0.1
Conecto luego existo, no conecto luego insisto.
Geo
Miembro de PLATA
Mensajes: 1011
Nacionalidad:
Re: Comparacion En C
«
Respuesta #7 en:
Sábado 31 de Marzo de 2007, 22:19 »
0
Todavía te falta checar algunos casos, por ejemplo cuando el año sea el mismo y entonces debas checar el mes (o el día)
.
Lo mejor es separar las comparaciones y no intentar meterlo todo en una sola:
Toma un empleado, compara el año con el del más joven (para la primer comparación puedes tomar al primer empleado del arreglo como el más joven), si el año es menor avanza con el siguiente, si es mayor actualiza el empleado más joven y avanza, si son iguales procede a comparar el mes de la misma forma.
Saludos,
JJ (Geo).
La imaginación es el límite.
Hardware & Software
|
Mexchip
su -
Moderador
Mensajes: 2349
Re: Comparacion En C
«
Respuesta #8 en:
Sábado 31 de Marzo de 2007, 23:17 »
0
Muy largo, yo en Perl lo haria usando un hash y ordenandolos por fechas...
no pongo el codigo (en C) porque no se programar en C (lo puedo hacer pero no le voy a dar tiempo a esto) pero esa es la idea.
usa un hash (año => {mes, dia, nombre_empleado}) asi lo ordenas por año y lo comparas por mes/dia tal como comenta Geo.
*******PELIGRO LEE ESTO!!*******
There is no place like 127.0.0.1
Conecto luego existo, no conecto luego insisto.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Comparacion En C