Ayuda por favor; duda con pequeño programa de C

Iniciado por feuersee, 1 Diciembre 2014, 18:05 PM

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

feuersee

Buenas tardes,

Soy nuevo en el foro, en primer lugar, muy buenas a todos.
Estudio Ing.Industrial en alemania y estoy empezando en el mundo de la programación, C, SQL, Java....mi duda hace referencia a C.

Nos exigen programar algo, no muy complejo, por lo tanto hasta ahí bien.
El problema radica en...que tenemos derecho a dos revisiones, ya utilice una, por lo que para la segunda revisión tiene que estar perfecto el programa, y la verdad, no se por donde cogerlo ya, ya que como os dije, estoy en mi fase inicial, por lo que agradecería mucho si me pudieran echar un cable.

El programa en sí calcula la edad de un individuo, es decir, introduces fecha de nacimiento así como fecha actual, y el programa te calcula la edad exacta.....X años.....Y meses.....Z días.

Según el profesor (primera revisión) los siguientes conceptos son erróneos;

-No se puede meter fecha, sino que tienes que escribir día, mes y año por separado.
-Resultado es erróneo, ya que al introducir por ejemplo 2.7.1968.....tienes como resultado....46 años...5 meses y 30 días, en lugar de 46 años...4 meses y 29 días.

Había pensado hacerlo con biblioteca conio, (getch) el problema es que trabajamos con linux, y que yo tenga entendido....no reconoce dicha biblioteca.

El programa en cuestión es el siguiente, agradecería mucho si me ayudan ya que tengo que entregarlo corregido esta semana y estoy un poco agobiado, muchas gracias!

PD: Las variables se identifican en alemán.

Jahr= año.......Jahrgang=año de nacimiento.....Heutiges Jahr=año actual
monat=mes......Geburtsmonat= mes de nacimiento...Heutiger monat= mes actual.
tag= día.......geburstag=día de nacimiento....Heutiger Tag= día actual

#include<stdio.h>


void main(void)
{
  int jg,gm,gt,hj,hm,ht,j,m,d;

  printf("Berechnung des Alters Bitte geben Sie Ihren Daten an: ");
  printf("\n\n Jahrgang:  ");
  scanf("%d",&jg);
  printf("\n Geburtsmonat: ");
  scanf("%d",&gm);
  printf("\n Geburtstag: ");
  scanf("%d",&gt);
  printf("\n Heutiges Jahr: ");
  scanf("%d",&hj);
  printf("\n\n Heutiger monat: ");
  scanf("%d",&hm);
  printf("\n\n Heutiger tag: ");
  scanf("%d",&ht);




  if(hm==gm)
  {
     if(ht>=gt)
     {
        j=hj-jg;
     }
     else
     {
     j=hj-jg-1;
     }
  }






  if(hm>gm)
  {
     j=hj-jg;
  }
  else
  {
     if(hm<gm)
     {
        j=hj-jg-1;
     }

  }






  if(hm==gm)
  {
     m=0;
  }





  if(hm<gm)
  {
     m=hm-gm;
     m=12+m;
  }






  if(hm>gm)
  {
     m=hm-gm;
  }






  if(gt==ht)
  {
     d=0;
  }
  else
  {
     if(ht>gt)
     {
     d=ht-gt;
     }
     else
     {
        switch(hm)
        {
           case 1:
           d=ht-gt;
           d=31+d;
           break;
           case 2:
           if(hj==2012 || jg==2016)
           {
              d=ht-gt;
              d=29+d;
           }
           else
           {
              d=ht-gt;
              d=28+d;
           }
           break;
           case 3:
           d=ht-gt;
           d=31+gt;
           break;
           case 4:
           d=ht-gt;
           d=30+d;
           break;
           case 5:
           d=ht-gt;
           d=31+d;
           break;
           case 6:
           d=ht-gt;
           d=30+d;
           break;
           case 7:
           d=ht-gt;
           d=31+d;
           break;
           case 8:
           d=ht-gt;
           d=31+d;
           break;
           case 9:
           d=ht-gt;
           d=30+d;
           break;
           case 10:
           d=ht-gt;
           d=31+d;
           break;
           case 11:
           d=ht-gt;
           d=30+d;
           break;
           case 12:
           d=ht-gt;
           d=31+d;
        break;
        }
     }
 }

  printf("Du bist %d Jahre, %d Monaten und %d Tage alt!",j,m,d);


}

Kherom

No deberías usar scanf para leer de la entrada estándar, y deberías traducir las variables y las cadenas para que entendamos el código. También deberías usar

]code=c]
tu codigo
]/code]

para que el código se muestre correctamente (Obviamente tienes que cambiar ] por [ en la antes de code y /code, las he puesto así porque si no no se muestran).