Algoritmia - alluda porfabor

   
Vista:

alluda porfabor

Publicado por eleazar (4 intervenciones) el 22/09/2009 19:45:23
nesesito que me alluden con esto esque tengo muvcho trabajo y no e p`didoo ir a la u porfa me expliccarian como resolberlo gracias

elaborar un algoritmo que calcule la edad de 20 personas apartir de la fecha de nacimiento y la fecha actual.El algoritmo debe presentar la edad de las personas, el total de mayores de edad,el total de menores de edad y la suma de todas las edades.
(Utilizar el ciclo para)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:alluda porfabor

Publicado por eduardo (55 intervenciones) el 23/09/2009 14:22:36
Antes de abordar la programación te recomendaría que repases un poco de ortografía y gramática.
La necesitas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:alluda porfabor

Publicado por eleazar (4 intervenciones) el 24/09/2009 16:23:49
Hola gracias por el aporte se que l necesito, estudiare mas ortografía y gramática así sea contra mi voluntad. Pero podrías explicarme cono solucionar problema por favor.
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:alluda porfabor

Publicado por eduardo (55 intervenciones) el 26/09/2009 18:09:13
Trabajar con fechas es un poco complejo ya que por un lado no sería un dato simple por ejemple en C/C++ suele tratarse como una estructura con 3 componentes (dia, mes, anyo) y por otro lado tienes el tema de la validación dado que si las fechas serán ingresadas desde teclado, debe haber algún módulo que verifique que la fecha ingresada es consistente por ejemplo hay meses que tienen 30 o 31 días o los meses de febrero que en años bisiestos tienen 29 días y cosas así.
Lo que a mi se me ocurre para tu problema sería implementarlo en C creando 2 estructuras, la estructura FECHA y la estructura PERSONA. Hace un tiempo hice un programa con fechas, le hice unos cambios para que se parezca al tuyo pero por cuestion de tiempo no logré terminarlo, espero que lo consigas.

#define CANT 20

typedef struct FECHA {
int dia;
int mes;
int anyo;
} Fecha;

typedef struct PERSONA {
Fecha fNacim;
int edad;
} Persona;

int main( void )
{
Persona personas[CANT];

leerData( personas );
mostrarData( personas );

/* otros cálculos */

return 0;
}

void leerData( Persona t[] )
{
Fecha obtFecha( int *ptrDia, int *ptrMes, int *ptrAnyo ); /* prototipo */

int dia, mes, anyo;
register int i;

printf( "\n\t LECTURA: FECHAS DE NACIMIENTO\n\t ======= ====================\n\n" );

for ( i = 0; i < CANT; ++i ) {
printf( " PERSONA %02d:\n", i + 1 );
t[i].fNacim = obtFecha( &dia, &mes, &anyo );
t[i].edad = ANYO_ACTUAL - t[i].fNacim.anyo;
}
}

void mostrarData( Persona t[] )
{
register int i;

printf( "\n\t FECHAS INGRESADAS\n\t =================\n\n" );

for ( i = 0; i < CANT; ++i )
printf( " PERSONA %02d:\n\t Fecha Nac: %02d/%02d/%4d\n\t Edad : %3d\n\n", i + 1, t[i].fNacim.dia, t[i].fNacim.mes, t[i].fNacim.anyo, t[i].edad );
}

Fecha obtFecha( int *ptrDia, int *ptrMes, int *ptrAnyo )
{
Fecha f;
int banderaErr;

/* prototipos */
int obtDia( void ), obtMes( void ), obtAnyo( void );
int veriFecha( int dia, int mes, int anyo );

do {
/* lectura de la fecha */
*ptrDia = obtDia();
*ptrMes = obtMes();
*ptrAnyo = obtAnyo();

banderaErr = veriFecha( *ptrDia, *ptrMes, *ptrAnyo );

if ( banderaErr ) { /* verificar que se obtuvo una fecha consistente */

printf( "\t\t La fecha no es consistente\n" );
printf( "\t\t\a El Dia digitado es incorrecto\n\n" );

}
else {
f.dia = *ptrDia;
f.mes = *ptrMes;
f.anyo = *ptrAnyo;

banderaErr = 0;
}

} while ( banderaErr );
printf( "\n" );

return f;
}

int obtDia( void )
{
char cadNum[80];
int dia;
int error;

do {
printf( "\t Dia [1-31]: " );
gets( cadNum );

dia = atoi( cadNum );

error = dia <= 0 || dia > 31;

if ( error ) printf ( "\t\t\a Revise que el Dia sea correcto\n\n");

} while ( error );

return dia;
}

int obtMes( void )
{
char cadNum[80];
int mes;
int error;

do {
printf( "\t Mes [1-12]: " );
gets( cadNum );

mes = atoi( cadNum );

error = mes <= 0 || mes > 12;

if ( error ) printf ( "\t\t\a El Mes digitado es incorrecto\n\n" );

} while ( error );

return mes;
}

int obtAnyo( void )
{
char cadNum[80];
int anyo;
int error;

do {
printf( "\t A¤o [%4d-%4d] : ", ANYO_MIN, ANYO_ACTUAL );
gets( cadNum );

anyo = atoi( cadNum );

error = anyo < ANYO_MIN || anyo > ANYO_ACTUAL;

if ( error ) printf ( "\t\t\a El a¤o digitado es incorrecto\n\n" );

} while ( error );

return anyo;
}

/* Rutina veriFecha.
Verifica que una fecha determinada sea correcta
Esta rutina devuelve:
0 si la fecha es correcta
1 si el dia es incorrecto
*/
int veriFecha( int dia, int mes, int anyo )
{
int error = 0;

switch ( mes ) {

/* meses de 31 dias */
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
break;

/* meses de 30 dias */
case 4:
case 6:
case 9:
case 11:
if ( dia > 30 )
error = 1;
break;

/* Febrero */
case 2:
if ( dia > 28 )
error = 1;

/* Si es 29 y año bisiesto, la fecha es correcta */
if ( dia == 29 && (anyo % 4 == 0 && anyo % 100 != 0 || anyo % 400 == 0) )
error = 0;
break;
}

return error;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:alluda porfabor

Publicado por eleazar (4 intervenciones) el 02/10/2009 16:33:48
muchisimas gracias por tu alluda me me a resultado mu buena
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar