Título: No veo el valor de las variables
Publicado por: jairogon en 29 Mayo 2010, 06:54 am
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;
}
Título: Re: No veo el valor de las variables
Publicado por: nicolas_cof en 29 Mayo 2010, 09:07 am
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 anio (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 anio (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.
|