Geburtsdatum im Alter berechnen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Geburtsdatum im Alter berechnen

    Hi,

    ich verstehe es nicht woran es liegt, aber bei mir funkioniert es mit dem Schaltjahr irgendwie nicht ganz :(
    Habt ihr vielleicht eine Idee ?

    Quellcode

    1. // geburtstag.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    2. //
    3. #include "stdafx.h"
    4. #include <iostream>
    5. #include <time.h>
    6. #include <windows.h>
    7. using namespace std;
    8. struct datum{
    9. int tag;
    10. int monat;
    11. int jahr;
    12. };
    13. int main(int argc, char* argv[])
    14. {
    15. datum werte;
    16. cout << "Bitte den Tag eingeben: ";
    17. cin >> werte.tag;
    18. cout << "Bitte den Monat eingeben: ";
    19. cin >> werte.monat;
    20. cout << "Bitte den Jahr eingeben: ";
    21. cin >> werte.jahr;
    22. // cout << "Sie sind am " << werte.tag << "." << werte.monat << "." << werte.jahr << " geboren.\n\n";
    23. //Zeit in Sekunden ab 1.1.1970
    24. time_t Zeitstempel;
    25. tm *nun;
    26. Zeitstempel = time(0);
    27. nun = localtime(&Zeitstempel);
    28. int feb = 0;
    29. if(werte.jahr%400==0 && werte.jahr% 4==0)
    30. {
    31. feb = 29;
    32. }
    33. if(werte.jahr%100==0)
    34. {
    35. feb = 28;
    36. }
    37. int nmonat = nun->tm_mon+1;
    38. int ntag = nun->tm_mday;
    39. int njahr = nun->tm_year+1900;
    40. // cout << ntag << '.' << nmonat << '.' << njahr << endl;
    41. if(werte.monat == 2 && werte.tag > feb || werte.jahr > njahr)
    42. {
    43. cout << "Falsche Geburtsdatum. Programm wird beendet.\n";
    44. system("pause");
    45. return 0;
    46. }
    47. else
    48. {
    49. if(nmonat >= werte.monat && ntag >= werte.tag)
    50. {
    51. werte.jahr = njahr - werte.jahr;
    52. }
    53. else
    54. {
    55. werte.jahr = njahr - werte.jahr - 1;
    56. }
    57. }
    58. cout << "\nSie sind " << werte.jahr << " Jahre " << werte.monat << " Monate alt";
    59. system("pause");
    60. return 0;
    61. }
    Alles anzeigen


    lg
  • Hi,
    bin schon bisschen weitergekommen, aber bekomme immer die Fehlermeldung:

    'localtime' wurde als veraltet deklariert

    Glaube, es liegt an der do-Schleife :(
    Kann mir bitte da jemand helfen ? Danke!

    Quellcode

    1. #include "stdafx.h"
    2. #include <iostream>
    3. #include <time.h>
    4. #include <windows.h>
    5. using namespace std;
    6. struct datum{
    7. int tag;
    8. int monat;
    9. int jahr;
    10. };
    11. int main(int argc, char* argv[])
    12. {
    13. datum werte;
    14. int testtag = 0;
    15. int testmonat = 0;
    16. int testjahr = 0;
    17. time_t Zeitstempel;
    18. tm *nun;
    19. Zeitstempel = time(0);
    20. nun = localtime(&Zeitstempel);
    21. do{
    22. cout << "Bitte den Tag eingeben: ";
    23. cin >> werte.tag;
    24. testtag = werte.tag;
    25. cout << "Bitte den Monat eingeben: ";
    26. cin >> werte.monat;
    27. testmonat = werte.monat;
    28. cout << "Bitte das Jahr eingeben: ";
    29. cin >> werte.jahr;
    30. testjahr = werte.jahr;
    31. }while(testtag < 32 /*&& werte.tag > 0 && werte.monat < 13 && werte.monat > 0 && werte.jahr <= njahr && werte.jahr > 0*/)
    32. // cout << "Sie sind am " << werte.tag << "." << werte.monat << "." << werte.jahr << " geboren.\n\n";
    33. int nmonat = nun->tm_mon+1;
    34. int ntag = nun->tm_mday;
    35. int njahr = nun->tm_year+1900;
    36. short int Monate[12] = { 31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    37. bool schaltjahr = false;
    38. if ( werte.jahr % 4 == 0 )
    39. {
    40. schaltjahr = true;
    41. Monate[1] = 29;
    42. }
    43. else
    44. {
    45. schaltjahr = true;
    46. Monate[1] = 28;
    47. }
    48. int x = 0;
    49. //
    50. //if(werte.tag > 31)
    51. //{
    52. // cout << "Dieser Tag existiert nicht.\n";
    53. // x = 1;
    54. //}
    55. //if(werte.monat > 12)
    56. //{
    57. // cout << "Dieses Monat existiert nicht.\n";
    58. // x = 1;
    59. //}
    60. //if(werte.jahr > njahr)
    61. //{
    62. // cout << "Dieses Jahr existiert nicht.\n";
    63. // x = 1;
    64. // return 0;
    65. //}
    66. //if((werte.monat == 1 || werte.monat == 3 || werte.monat == 5 || werte.monat == 7 || werte.monat == 8 || werte.monat == 10 || werte.monat == 12) && werte.tag > Monate[0])
    67. //{
    68. // cout << "Dieses Monat hat 31 Tage. Programm wird beendet!\n";
    69. // x = 1;
    70. // system("pause");
    71. // return 0;
    72. //}
    73. //if((werte.monat == 4 || werte.monat == 6 || werte.monat == 9 || werte.monat == 11) && werte.tag > Monate[3])
    74. //{
    75. // cout << "Dieses Monat hat 30 Tage. Programm wird beendet!\n";
    76. // x = 1;
    77. // system("pause");
    78. // return 0;
    79. //}
    80. //if(x != 1)
    81. //{
    82. //if(werte.monat == 2 && werte.tag > Monate[1])
    83. //{
    84. // cout << "Dieses Monat hat " << Monate[1] << " Tage. Programm wird beendet!\n";
    85. // system("pause");
    86. // return 0;
    87. //}
    88. if(njahr == werte.jahr)
    89. {
    90. if(nmonat == werte.monat)
    91. {
    92. if(ntag < werte.tag)
    93. {
    94. cout << "fehler im code 1";
    95. }
    96. else if(ntag > werte.tag)
    97. {
    98. werte.jahr = njahr - werte.jahr - 1;
    99. }
    100. else if(ntag == werte.tag)
    101. {
    102. werte.jahr = njahr - werte.jahr;
    103. }
    104. }
    105. }
    106. else if(njahr > werte.jahr)
    107. {
    108. if(nmonat >= werte.monat)
    109. {
    110. if(ntag > werte.tag)
    111. {
    112. werte.jahr = njahr - werte.jahr;
    113. cout << "fehler im code 2";
    114. }
    115. else if(ntag == werte.tag)
    116. {
    117. werte.jahr = njahr - werte.jahr;
    118. }
    119. else
    120. {
    121. werte.jahr = njahr - werte.jahr - 1;
    122. cout << "fehler im code 3";
    123. }
    124. }
    125. else
    126. {
    127. werte.jahr = njahr - werte.jahr;
    128. cout << "fehler im code 4";
    129. }
    130. }
    131. /*
    132. if(nmonat < werte.monat)
    133. {
    134. werte.jahr = njahr - werte.jahr;
    135. }
    136. else if(nmonat == werte.monat && ntag > werte.tag)
    137. {
    138. werte.jahr = njahr - werte.jahr - 1;
    139. }
    140. else
    141. {
    142. werte.jahr = njahr - werte.jahr - 1;
    143. }
    144. */
    145. cout << "\nSie sind " << werte.jahr << " Jahre " << werte.monat << " Monate und " << werte.tag << " Tage alt";
    146. system("pause");
    147. //}
    148. return 0;
    149. }
    Alles anzeigen


    lg
  • Hi,

    schau dir das mal an: http://www.nordwest.net/hgm/kalender/kal-61.htm

    so wie es aussieht hast du einen fehler in der berechnung des schaltjahres.

    obwohl mir nicht ganz klar is was dein programm machen soll...also was das mit dem geburtsdatum einer person zu tun hat... oder willst du dem benutzer sagen ob er in einem schaltjahr geboren wurde oder eben nicht?

    Mfg da BendIt
    .:Reden Ist Schweigen und Silber Ist Gold:.

    real programmers don't comment their code: if it was hard to write, it should be hard to read!
  • Hier mal das komplette programm zum schaltjahr berechnen (aus berufsschule ;)

    Quellcode

    1. #include <iostream.h>
    2. #include <stdio.h>
    3. #include <string.h>
    4. int DoM(int month,int year);
    5. bool IsSJ(int year);
    6. void main()
    7. {
    8. int month,year,result;
    9. cout << "Bitte geben Sie den Monat ein: ";
    10. cin >> month;
    11. cout << endl << "Bitte geben Sie das Jahr ein: ";
    12. cin >> year;
    13. result = DoM(month,year);
    14. if (result != -1 )
    15. {
    16. cout << "Der Monat hat " << result << " Tage" << endl;
    17. }
    18. else
    19. {
    20. cout << "Ungueltiges Datum!!!" << endl;
    21. }
    22. }
    23. int DoM(int month, int year)
    24. {
    25. if(month > 12)
    26. {
    27. return -1;
    28. }
    29. else
    30. {
    31. if((month == 1) || (month == 3) || (month == 5) || (month == 7) || (month == 8) || (month == 10) || (month == 12))
    32. {
    33. return 31;
    34. }
    35. else if(( month == 4) || (month == 6) || (month == 9) || (month == 11) )
    36. {
    37. return 30;
    38. }
    39. else
    40. {
    41. if (IsSJ(year))
    42. {
    43. return 29;
    44. }
    45. else
    46. {
    47. return 28;
    48. }
    49. }
    50. }
    51. }
    52. bool IsSJ(int year)
    53. {
    54. if((year % 4 == 0) || (year % 400 == 0))
    55. {
    56. if(year % 100 == 0)
    57. {
    58. return false;
    59. }
    60. else
    61. {
    62. return true;
    63. }
    64. }
    65. else
    66. {
    67. return false;
    68. }
    69. }
    Alles anzeigen
    .:Reden Ist Schweigen und Silber Ist Gold:.

    real programmers don't comment their code: if it was hard to write, it should be hard to read!