En el siguiente programa llamo a la función edad y funciona pero cuando hago paso a paso no veo el valor que toman las variables nacimiento y actual?
Gracias
//Programa que recibe la fecha de nacimiento de una persona
//y la fecha actual y calcula la edad que tiene actualmente
//Autor: JAIRO ALFONSO GONZALEZ CARO
//Fecha: 28/5/2010
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#define _enhe "\xa4" //n minuscula
void edad(int a,int b,int c,int d,int e,int f);
void main(void)
{
int anoact,mesact,diact,anonac,mesnac,dianac;
system("cls");
cout<<"..........CALCULO DE LA EDAD DEL ALUMNO..........\n\n";
cout<<"FECHA ACTUAL\n";
cout<<"Entra el dia(1 - 31): ";
cin>>diact;
cout<<"Entra el mes(1 - 12): ";
cin>>mesact;
cout<<"Entra el a"<<_enhe<<"o(Ej: 1976): ";
cin>>anoact;
cout<<"FECHA NACIMIENTO\n";
cout<<"Entra el dia(1 - 31): ";
cin>>dianac;
cout<<"Entra el mes(1 - 12): ";
cin>>mesnac;
cout<<"Entra el a"<<_enhe<<"o(Ej: 1976): ";
cin>>anonac;
edad(anonac,mesnac,dianac,anoact,mesact,diact);
getchar();
}
void edad(int a,int b,int c,int d,int e,int f)
{
long nacimiento, actual;
int anos,meses,dias;
if(b==2||b==3)c=c-1; //Aqui se restan los dias de mas de los
if(b==4||b==5)c=c-2; //meses de 31 dias
if(b==6||b==7)c=c-3;
if(b==8)c=c-4;
if(b==9||b==10)c=c-5;
if(b==11||b==12)c=c-6;
nacimiento=(d*365)+(e*30)+f; //HACIENDOLO PASO A PASO NO ME MUESTRA EL
actual=(a*365)+(b*30)+c; //RESULTADO DE LAS VARIABLES nacimiento y actual ********
anos=((actual-nacimiento)/365);
meses=(((actual-nacimiento)%365)/30);
dias=((actual-nacimiento)%30);
cout<<"\nLa Fecha de Nacimiento es:"<<c<<"/"<<b<<"/"<<a<<endl<<endl;
cout<<"La Fecha Actual es:"<<f<<"/"<<e<<"/"<<d<<endl<<endl;
cout<<"El Alumno tiene: "<<anos<<"a"<<_enhe<<"os "<<meses<<" meses y "<<dias<<" dias"<<endl;
}
Mmmmm yo de C++ no conozco mucho, pero la libreria stdio.h no hace falta incluirla.
Te faltaba agregar el namespace y la inclusion de la libreria iostream es sin el .h (Link (http://en.wikipedia.org/wiki/Iostream))
El problema estaba en que si te fijas bien..
nacimiento = ( d * 365 ) + ( e * 30 ) + f;
actual = ( a * 365 ) + ( b * 30 ) + c;
las variables d, e y f hacen referencia a la fecha actual y vos al resultado de la operacion con esas variables se lo asignabas a nacimiento...
Aca te dejo el codigo con algunas modificaciones...
#include <iostream>
using namespace std;
void edad ( int a, int b, int c, int d, int e, int f );
int main( void )
{
int ano_act, mes_act, dia_act, ano_nac, mes_nac, dia_nac;
cout << "..........CALCULO DE LA EDAD DEL ALUMNO..........\n";
cout << "\nFECHA ACTUAL\n";
cout << "Entra el dia (1 - 31): ";
cin >> dia_act;
cout << "Entra el mes (1 - 12): ";
cin >> mes_act;
cout << "Entra el año (Ej: 1976): ";
cin >> ano_act;
cout << "\nFECHA NACIMIENTO\n";
cout << "Entra el dia (1 - 31): ";
cin >> dia_nac;
cout << "Entra el mes (1 - 12): ";
cin >> mes_nac;
cout << "Entra el año (Ej: 1976): ";
cin >> ano_nac;
edad( ano_nac, mes_nac, dia_nac, ano_act, mes_act, dia_act );
return 0;
}
void edad( int a, int b, int c, int d, int e, int f )
{
long nacimiento, actual;
int anos, meses, dias;
if ( b == 2 || b == 3 ) c = c - 1;
if ( b == 4 || b == 5 ) c = c - 2;
if ( b == 6 || b == 7 ) c = c - 3;
if ( b == 8 ) c = c - 4;
if ( b == 9 || b == 10 ) c = c - 5;
if ( b == 11 || b == 12 ) c = c - 6;
actual = ( d * 365 ) + ( e * 30 ) + f;
nacimiento = ( a * 365 ) + ( b * 30 ) + c;
anos = ( actual - nacimiento ) / 365;
meses = (( actual - nacimiento ) % 365 ) / 30;
dias = ( actual - nacimiento ) % 30;
cout << "\nLa Fecha de Nacimiento es: " << c << "/" << b << "/" << a << endl;
cout << "La Fecha Actual es: " << f << "/" << e << "/" << d << endl;
cout << "El Alumno tiene: " << anos << " años " << meses << " meses y " << dias << " dias" << endl;
}
Salu10.