fork download
  1. /*
  2. OVERVIEW: Given date of births of two persons as inputs, return 1 if person one is elder,
  3. 2 if person two is elder, 0 if both are of same age.
  4. Example: isOlder("24-07-2000", "25-07-2000") should return 1 as person one
  5. is elder than person two.
  6.  
  7. INPUTS: DOBs of two persons as parameters in the format "DD-MM-YYYY".
  8.  
  9. OUTPUT: 1 if person one is elder, 2 if person two is elder, 0 if both are of same age.
  10.  
  11. ERROR CASES: Return -1 if any DOB is invalid.
  12.  
  13. NOTES: Don't use any built-in C functions for comparisions. You are free to write any helper functions.
  14. */
  15. #include<stdio.h>
  16. #include<stdlib.h>
  17. void popuplate_parts(char* dob1,char *d,char *m, char *y){
  18. int i = 0,j=0;
  19. //copy first characters in d array
  20. for (i = 0; i < 2;i++,j++){
  21. d[i] = dob1[j];
  22. }
  23. d[i] = '\0';
  24. j++; //skip "-"
  25.  
  26. //copy next 2 characters after - in m array
  27. for (i = 0; i < 2;i++,j++){
  28. m[i] = dob1[j];
  29. }
  30. m[i] = '\0';
  31. j++; //skip "-"
  32.  
  33. //copy next 4 characters after - in y array
  34. for (i = 0; i < 4;i++,j++){
  35. y[i] = dob1[j];
  36. }
  37. y[i] = '\0';
  38. }
  39. int isOlder(char *dob1, char *dob2) {
  40. char date1[3];
  41. char date2[3];
  42. char month1[3];
  43. char month2[3];
  44. char year1[5];
  45. char year2[5];
  46. int d1, m1, y1, d2, m2, y2;
  47. popuplate_parts(dob1, date1, month1, year1);
  48. //now we have extracted all parts from dob1
  49. //printf("d=%s m=%s y=%s",date1,month1,year1);
  50. //make them integers now
  51. d1 = atoi(date1);
  52. m1 = atoi(month1);
  53. y1 = atoi(year1);
  54.  
  55. popuplate_parts(dob2, date2, month2, year2);
  56. //printf("d=%s m=%s y=%s", date1, month1, year1);
  57. d2 = atoi(date2);
  58. m2 = atoi(month2);
  59. y2 = atoi(year2);
  60.  
  61. if(d1<=0||d1>31||d2<=0||d2>31||m1<=0||m1>12||m2<=0||m2>12){
  62. return -1;
  63. }
  64. if(y1>y2){
  65. return 2;
  66. }else if(y2>y1){
  67. return 1;
  68. }else{
  69. if(m1>m2){
  70. return 2;
  71. }else if(m2>m1){
  72. return 1;
  73. }else {
  74. if(d1>d2){
  75. return 2;
  76. }else if(d2>d1){
  77. return 1;
  78. }else{
  79. return 0;
  80. }
  81. }
  82.  
  83.  
  84. }
  85. return 0;
  86. }
  87. int main(){
  88. printf("1 means person 1 is elder, 2 means person2 is elder, 0 means both are of same age, -1 means wrong date entered\n");
  89. printf("%d\n",isOlder("23-11-2001", "25-12-2003"));
  90. printf("%d\n",isOlder("23-11-2011", "25-12-2003"));
  91. printf("%d\n",isOlder("23-11-2001", "23-11-2001"));
  92. printf("%d\n",isOlder("23-11-2001", "25-13-2003"));
  93. return 0;
  94. }
Success #stdin #stdout 0s 9432KB
stdin
Standard input is empty
stdout
1 means person 1 is elder, 2 means person2 is elder, 0 means both are of same age, -1 means wrong date entered
1
2
0
-1