Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdio.h"
- #include "stdlib.h"
- #include "string.h"
- typedef struct {
- int day;
- char month[4];
- int year;
- } DATE;
- typedef struct {
- const char* pFirstname;
- const char* pLastname;
- const char* pNationality;
- DATE Birthdate;
- } STUDENT;
- int Exam(STUDENT* pStudents, int nStudents, const char* pPattern);
- 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}}, };
- const char* ptoSearch = "Carpenter, James born 11 October 2002 from Canada";
- int main() {
- printf("%d\n", Exam(students, 4, ptoSearch));
- return 0;
- }
- int Exam(STUDENT* pStudents, int nStudents, const char* pPattern) {
- //check for errors
- if (pStudents == 0 || nStudents == 0 || pPattern == 0) {
- return 0;
- }
- //Calculate length of name and save it
- int lastNameLen = 0;
- for (int i = 0; *(pPattern + i) != ','; i++) {
- lastNameLen++;
- }
- char *lastName = (char*)malloc((lastNameLen+1) * sizeof(char));
- for (int i = 0; *(pPattern + i) != ','; i++) {
- *(lastName + i) = *(pPattern + i);
- }
- *(lastName + lastNameLen) = 0;
- //printf("%s ", lastName);
- //Calculate length of lastname and save it
- int firstNameLen = 0;
- for (int i = 0; *(pPattern + lastNameLen + 2 + i) != ' '; i++) {
- firstNameLen++;
- }
- char* firstName = (char*)malloc((firstNameLen + 1) * sizeof(char));
- for (int i = 0; *(pPattern + lastNameLen + 2 + i) != ' '; i++) {
- *(firstName + i) = *(pPattern + lastNameLen + 2 + i);
- }
- *(firstName + firstNameLen) = 0;
- //printf("%s ", firstName);
- //Save birthday
- int Birthday;
- int dayLen=0;
- for (int i = 0; *(pPattern + lastNameLen + firstNameLen + 8 + i) != ' '; i++) {
- dayLen++;
- }
- char* day = (char*)malloc((dayLen + 1) * sizeof(char));
- for (int i = 0; *(pPattern + lastNameLen + firstNameLen + 8 + i) != ' '; i++) {
- *(day + i) = *(pPattern + lastNameLen + firstNameLen + 8 + i);
- }
- *(day + dayLen) = 0;
- Birthday = atoi(day);
- //printf("%d ", Birthday);
- //Save birth month
- int monthLen = 0;
- for (int i = 0; *(pPattern + lastNameLen + firstNameLen + dayLen + 9 + i) != ' '; i++) {
- monthLen++;
- }
- char* month = (char*)malloc(4 * sizeof(char));
- for (int i = 0; i<3; i++) {
- *(month + i) = *(pPattern + lastNameLen + firstNameLen + dayLen + 9 + i);
- }
- *(month + 3) = 0;
- //printf("%s ", month);
- //save birthyear
- int Birthyear;
- char* year = (char*)malloc(5 * sizeof(char));
- for (int i = 0; i < 5; i++) {
- *(year + i) = *(pPattern + lastNameLen + firstNameLen + dayLen + monthLen + 10 + i);
- }
- *(year + 4) = 0;
- Birthyear = atoi(year);
- //printf("%d ", Birthyear);
- //save nationality
- int nationLen = 0;
- for (int i = 0; *(pPattern + lastNameLen + firstNameLen + dayLen + monthLen + 20 + i) != '\0'; i++) {
- nationLen++;
- }
- char* nation = (char*)malloc(nationLen * sizeof(char));
- for (int i = 0; i < nationLen; i++) {
- *(nation + i) = *(pPattern + lastNameLen + firstNameLen + dayLen + monthLen + 20 + i);
- }
- *(nation+nationLen) = 0;
- //printf("%s", nation);
- //COMPARE everything
- for (int i = 0; i < nStudents; i++) {
- 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) {
- return 1;
- break;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement