/*
OVERVIEW: Given date of births of two persons as inputs, return 1 if person one is elder,
2 if person two is elder, 0 if both are of same age.
Example: isOlder("24-07-2000", "25-07-2000") should return 1 as person one
is elder than person two.
INPUTS: DOBs of two persons as parameters in the format "DD-MM-YYYY".
OUTPUT: 1 if person one is elder, 2 if person two is elder, 0 if both are of same age.
ERROR CASES: Return -1 if any DOB is invalid.
NOTES: Don't use any built-in C functions for comparisions. You are free to write any helper functions.
*/
#include<stdio.h>
#include<stdlib.h>
void popuplate_parts(char* dob1,char *d,char *m, char *y){
int i = 0,j=0;
//copy first characters in d array
for (i = 0; i < 2;i++,j++){
d[i] = dob1[j];
}
d[i] = '\0';
j++; //skip "-"
//copy next 2 characters after - in m array
for (i = 0; i < 2;i++,j++){
m[i] = dob1[j];
}
m[i] = '\0';
j++; //skip "-"
//copy next 4 characters after - in y array
for (i = 0; i < 4;i++,j++){
y[i] = dob1[j];
}
y[i] = '\0';
}
int isOlder(char *dob1, char *dob2) {
char date1[3];
char date2[3];
char month1[3];
char month2[3];
char year1[5];
char year2[5];
int d1, m1, y1, d2, m2, y2;
popuplate_parts(dob1, date1, month1, year1);
//now we have extracted all parts from dob1
//printf("d=%s m=%s y=%s",date1,month1,year1);
//make them integers now
popuplate_parts(dob2, date2, month2, year2);
//printf("d=%s m=%s y=%s", date1, month1, year1);
if(d1<=0||d1>31||d2<=0||d2>31||m1<=0||m1>12||m2<=0||m2>12){
return -1;
}
if(y1>y2){
return 2;
}else if(y2>y1){
return 1;
}else{
if(m1>m2){
return 2;
}else if(m2>m1){
return 1;
}else {
if(d1>d2){
return 2;
}else if(d2>d1){
return 1;
}else{
return 0;
}
}
}
return 0;
}
int main(){
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"); printf("%d\n",isOlder
("23-11-2001", "25-12-2003")); printf("%d\n",isOlder
("23-11-2011", "25-12-2003")); printf("%d\n",isOlder
("23-11-2001", "23-11-2001")); printf("%d\n",isOlder
("23-11-2001", "25-13-2003")); return 0;
}
LyoKT1ZFUlZJRVc6IAlHaXZlbiBkYXRlIG9mIGJpcnRocyBvZiB0d28gcGVyc29ucyBhcyBpbnB1dHMsIHJldHVybiAxIGlmIHBlcnNvbiBvbmUgaXMgZWxkZXIsCjIgaWYgcGVyc29uIHR3byBpcyBlbGRlciwgMCBpZiBib3RoIGFyZSBvZiBzYW1lIGFnZS4KRXhhbXBsZTogaXNPbGRlcigiMjQtMDctMjAwMCIsICIyNS0wNy0yMDAwIikgc2hvdWxkIHJldHVybiAxIGFzIHBlcnNvbiBvbmUKaXMgZWxkZXIgdGhhbiBwZXJzb24gdHdvLgoKSU5QVVRTOiAJRE9CcyBvZiB0d28gcGVyc29ucyBhcyBwYXJhbWV0ZXJzIGluIHRoZSBmb3JtYXQgIkRELU1NLVlZWVkiLgoKT1VUUFVUOiAJMSBpZiBwZXJzb24gb25lIGlzIGVsZGVyLCAyIGlmIHBlcnNvbiB0d28gaXMgZWxkZXIsIDAgaWYgYm90aCBhcmUgb2Ygc2FtZSBhZ2UuCgpFUlJPUiBDQVNFUzogUmV0dXJuIC0xIGlmIGFueSBET0IgaXMgaW52YWxpZC4KCk5PVEVTOiAJCURvbid0IHVzZSBhbnkgYnVpbHQtaW4gQyBmdW5jdGlvbnMgZm9yIGNvbXBhcmlzaW9ucy4gWW91IGFyZSBmcmVlIHRvIHdyaXRlIGFueSBoZWxwZXIgZnVuY3Rpb25zLgoqLwojaW5jbHVkZTxzdGRpby5oPgojaW5jbHVkZTxzdGRsaWIuaD4Kdm9pZCBwb3B1cGxhdGVfcGFydHMoY2hhciogZG9iMSxjaGFyICpkLGNoYXIgKm0sIGNoYXIgKnkpewoJaW50IGkgPSAwLGo9MDsKCS8vY29weSBmaXJzdCBjaGFyYWN0ZXJzIGluIGQgYXJyYXkKCWZvciAoaSA9IDA7IGkgPCAyO2krKyxqKyspewoJCWRbaV0gPSBkb2IxW2pdOyAgCgl9CglkW2ldID0gJ1wwJzsKCWorKzsgLy9za2lwICItIgoJCgkvL2NvcHkgbmV4dCAyIGNoYXJhY3RlcnMgYWZ0ZXIgLSBpbiBtIGFycmF5Cglmb3IgKGkgPSAwOyBpIDwgMjtpKyssaisrKXsKCQltW2ldID0gZG9iMVtqXTsKCX0KCW1baV0gPSAnXDAnOwoJaisrOyAvL3NraXAgIi0iCgoJLy9jb3B5IG5leHQgNCBjaGFyYWN0ZXJzIGFmdGVyIC0gaW4geSBhcnJheQoJZm9yIChpID0gMDsgaSA8IDQ7aSsrLGorKyl7CgkJeVtpXSA9IGRvYjFbal07Cgl9Cgl5W2ldID0gJ1wwJzsKfQppbnQgaXNPbGRlcihjaGFyICpkb2IxLCBjaGFyICpkb2IyKSB7CgljaGFyIGRhdGUxWzNdOwoJY2hhciBkYXRlMlszXTsKCWNoYXIgbW9udGgxWzNdOwoJY2hhciBtb250aDJbM107CgljaGFyIHllYXIxWzVdOwoJY2hhciB5ZWFyMls1XTsKCWludCBkMSwgbTEsIHkxLCBkMiwgbTIsIHkyOwoJcG9wdXBsYXRlX3BhcnRzKGRvYjEsIGRhdGUxLCBtb250aDEsIHllYXIxKTsKCS8vbm93IHdlIGhhdmUgZXh0cmFjdGVkIGFsbCBwYXJ0cyBmcm9tIGRvYjEKCS8vcHJpbnRmKCJkPSVzIG09JXMgeT0lcyIsZGF0ZTEsbW9udGgxLHllYXIxKTsKCS8vbWFrZSB0aGVtIGludGVnZXJzIG5vdyAKCWQxID0gYXRvaShkYXRlMSk7CgltMSA9IGF0b2kobW9udGgxKTsKCXkxID0gYXRvaSh5ZWFyMSk7CgoJcG9wdXBsYXRlX3BhcnRzKGRvYjIsIGRhdGUyLCBtb250aDIsIHllYXIyKTsKCS8vcHJpbnRmKCJkPSVzIG09JXMgeT0lcyIsIGRhdGUxLCBtb250aDEsIHllYXIxKTsKCWQyID0gYXRvaShkYXRlMik7CgltMiA9IGF0b2kobW9udGgyKTsKCXkyID0gYXRvaSh5ZWFyMik7CgkKCWlmKGQxPD0wfHxkMT4zMXx8ZDI8PTB8fGQyPjMxfHxtMTw9MHx8bTE+MTJ8fG0yPD0wfHxtMj4xMil7CgkJcmV0dXJuIC0xOwoJfQoJaWYoeTE+eTIpewoJCXJldHVybiAyOwoJfWVsc2UgaWYoeTI+eTEpewoJCXJldHVybiAxOwoJfWVsc2V7CgkJaWYobTE+bTIpewoJCXJldHVybiAyOwoJfWVsc2UgaWYobTI+bTEpewoJCXJldHVybiAxOwoJfWVsc2UgewoJCWlmKGQxPmQyKXsKCQkJcmV0dXJuIDI7CgkJfWVsc2UgaWYoZDI+ZDEpewoJCQlyZXR1cm4gMTsKCQl9ZWxzZXsKCQkJcmV0dXJuIDA7CgkJfQoJfQoJCQoJCQoJfQoJcmV0dXJuIDA7Cn0KaW50ICBtYWluKCl7CglwcmludGYoIjEgbWVhbnMgcGVyc29uIDEgaXMgZWxkZXIsIDIgbWVhbnMgcGVyc29uMiBpcyBlbGRlciwgMCBtZWFucyBib3RoIGFyZSBvZiBzYW1lIGFnZSwgLTEgbWVhbnMgd3JvbmcgZGF0ZSBlbnRlcmVkXG4iKTsKCXByaW50ZigiJWRcbiIsaXNPbGRlcigiMjMtMTEtMjAwMSIsICIyNS0xMi0yMDAzIikpOwoJcHJpbnRmKCIlZFxuIixpc09sZGVyKCIyMy0xMS0yMDExIiwgIjI1LTEyLTIwMDMiKSk7CglwcmludGYoIiVkXG4iLGlzT2xkZXIoIjIzLTExLTIwMDEiLCAiMjMtMTEtMjAwMSIpKTsKCXByaW50ZigiJWRcbiIsaXNPbGRlcigiMjMtMTEtMjAwMSIsICIyNS0xMy0yMDAzIikpOwoJcmV0dXJuIDA7Cn0=