Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.50 KB | None | 0 0
  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. #include "string.h"
  4.  
  5. typedef struct {
  6. int day;
  7. char month[4];
  8. int year;
  9. } DATE;
  10.  
  11. typedef struct {
  12. const char* pFirstname;
  13. const char* pLastname;
  14. const char* pNationality;
  15. DATE Birthdate;
  16. } STUDENT;
  17.  
  18. int Exam(STUDENT* pStudents, int nStudents, const char* pPattern);
  19.  
  20. STUDENT students[] = { {"John", "Smith", "Britain", {1, "Feb", 2000}}, {"Mary", "Weaver", "USA", {2, "Mar", 2001}}, {"James", "Carpenter", "Canada", {11, "Oct", 2002}}, {"Elizabeth", "Clerk", "Ireland", {21, "Dec", 2001}}, };
  21.  
  22. const char* ptoSearch = "Carpenter, James born 11 October 2002 from Canada";
  23.  
  24. int main() {
  25.  
  26. printf("%d\n", Exam(students, 4, ptoSearch));
  27.  
  28. return 0;
  29. }
  30.  
  31. int Exam(STUDENT* pStudents, int nStudents, const char* pPattern) {
  32.  
  33. //check for errors
  34. if (pStudents == 0 || nStudents == 0 || pPattern == 0) {
  35. return 0;
  36. }
  37.  
  38. //Calculate length of name and save it
  39. int lastNameLen = 0;
  40. for (int i = 0; *(pPattern + i) != ','; i++) {
  41. lastNameLen++;
  42. }
  43. char *lastName = (char*)malloc((lastNameLen+1) * sizeof(char));
  44. for (int i = 0; *(pPattern + i) != ','; i++) {
  45. *(lastName + i) = *(pPattern + i);
  46. }
  47. *(lastName + lastNameLen) = 0;
  48. //printf("%s ", lastName);
  49.  
  50. //Calculate length of lastname and save it
  51. int firstNameLen = 0;
  52. for (int i = 0; *(pPattern + lastNameLen + 2 + i) != ' '; i++) {
  53. firstNameLen++;
  54. }
  55. char* firstName = (char*)malloc((firstNameLen + 1) * sizeof(char));
  56. for (int i = 0; *(pPattern + lastNameLen + 2 + i) != ' '; i++) {
  57. *(firstName + i) = *(pPattern + lastNameLen + 2 + i);
  58. }
  59. *(firstName + firstNameLen) = 0;
  60. //printf("%s ", firstName);
  61.  
  62. //Save birthday
  63. int Birthday;
  64. int dayLen=0;
  65. for (int i = 0; *(pPattern + lastNameLen + firstNameLen + 8 + i) != ' '; i++) {
  66. dayLen++;
  67. }
  68. char* day = (char*)malloc((dayLen + 1) * sizeof(char));
  69. for (int i = 0; *(pPattern + lastNameLen + firstNameLen + 8 + i) != ' '; i++) {
  70. *(day + i) = *(pPattern + lastNameLen + firstNameLen + 8 + i);
  71. }
  72. *(day + dayLen) = 0;
  73. Birthday = atoi(day);
  74. //printf("%d ", Birthday);
  75.  
  76. //Save birth month
  77. int monthLen = 0;
  78. for (int i = 0; *(pPattern + lastNameLen + firstNameLen + dayLen + 9 + i) != ' '; i++) {
  79. monthLen++;
  80. }
  81. char* month = (char*)malloc(4 * sizeof(char));
  82. for (int i = 0; i<3; i++) {
  83. *(month + i) = *(pPattern + lastNameLen + firstNameLen + dayLen + 9 + i);
  84. }
  85. *(month + 3) = 0;
  86. //printf("%s ", month);
  87.  
  88. //save birthyear
  89. int Birthyear;
  90. char* year = (char*)malloc(5 * sizeof(char));
  91. for (int i = 0; i < 5; i++) {
  92. *(year + i) = *(pPattern + lastNameLen + firstNameLen + dayLen + monthLen + 10 + i);
  93. }
  94. *(year + 4) = 0;
  95. Birthyear = atoi(year);
  96. //printf("%d ", Birthyear);
  97.  
  98. //save nationality
  99. int nationLen = 0;
  100. for (int i = 0; *(pPattern + lastNameLen + firstNameLen + dayLen + monthLen + 20 + i) != '\0'; i++) {
  101. nationLen++;
  102. }
  103. char* nation = (char*)malloc(nationLen * sizeof(char));
  104. for (int i = 0; i < nationLen; i++) {
  105. *(nation + i) = *(pPattern + lastNameLen + firstNameLen + dayLen + monthLen + 20 + i);
  106. }
  107. *(nation+nationLen) = 0;
  108. //printf("%s", nation);
  109.  
  110. //COMPARE everything
  111. for (int i = 0; i < nStudents; i++) {
  112. if (strcmp(pStudents[i].pFirstname, firstName) == 0 && strcmp(pStudents[i].pLastname, lastName) == 0 && strcmp(pStudents[i].pNationality, nation) == 0 && strcmp(pStudents[i].Birthdate.month, month) == 0 && pStudents[i].Birthdate.day == Birthday && pStudents[i].Birthdate.year == Birthyear) {
  113. return 1;
  114. break;
  115. }
  116. }
  117.  
  118. return 0;
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement