No veo el valor de las variables

Iniciado por jairogon, 29 Mayo 2010, 06:54 AM

0 Miembros y 1 Visitante están viendo este tema.

jairogon

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;

}

nicolas_cof

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)

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.