Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define SIZE 4
- struct person
- {
- char *name;
- int yearOfBirth;
- int numberOfChildren;
- struct child *firstChild;
- };
- struct child
- {
- struct person data;
- struct child *next;
- };
- void loadChildData(struct person *personPointer)
- {
- int i;
- struct child *childPointer;
- childPointer = personPointer->firstChild;
- for(i = 0; i < personPointer->numberOfChildren; i++)
- {
- if (i == 0)
- {
- childPointer = (struct child*)malloc(sizeof(struct child));
- childPointer->data.name = (char*)malloc(sizeof(char)*(strlen(personPointer->name) + 1));
- strcpy((childPointer->data.name), personPointer->name);
- childPointer->data.numberOfChildren = 0;
- childPointer->data.firstChild = NULL;
- printf("Wprowadz date urodzenia %i dziecka dla: %s: ", (i+1), personPointer->name);
- scanf("%i", &(childPointer->data.yearOfBirth));
- childPointer->next = NULL;
- personPointer->firstChild = childPointer;
- }
- else
- {
- childPointer->next = (struct child*)malloc(sizeof(struct child));
- childPointer = childPointer->next;
- childPointer->data.name = (char*)malloc(sizeof(char)*(strlen(personPointer->name) + 1));
- strcpy((childPointer->data.name), personPointer->name);
- childPointer->data.numberOfChildren = 0;
- childPointer->data.firstChild = NULL;
- printf("Wprowadz date urodzenia %i dziecka dla: %s: ", (i+1), personPointer->name);
- scanf("%i", &(childPointer->data.yearOfBirth));
- childPointer->next = NULL;
- }
- }
- printf("%p", childPointer);
- }
- void showPerson(struct person *personPointer)
- {
- struct child *childPointer;
- printf("Nazwisko: %s\n", personPointer->name);
- printf("Rok urodzenia: %i\n", personPointer->yearOfBirth);
- printf("Liczba dzieci: %i\n\n", personPointer->numberOfChildren);
- childPointer = personPointer->firstChild;
- if (childPointer != NULL)
- {
- showPerson(&(childPointer->data));
- while(childPointer->next != NULL)
- {
- childPointer = childPointer->next;
- showPerson(&(childPointer->data));
- }
- }
- }
- void showAll(struct person personArray[], int size)
- {
- int i;
- for(i = 0; i < size; i++)
- {
- showPerson(&personArray[i]);
- }
- }
- char *findChildrenStatus(struct person personArray[], int size, char **maxChildrenParent)
- {
- int i;
- int noChildren;
- int maxChildren;
- char *noChildrenAnswer;
- noChildren = 0;
- if (size >= 1)
- {
- maxChildren = personArray[0].numberOfChildren;
- *maxChildrenParent = personArray[0].name;
- if (personArray[0].numberOfChildren == 0)
- {
- noChildren = 1;
- }
- }
- for(i = 1; i < size; i++)
- {
- if(personArray[i].numberOfChildren > maxChildren)
- {
- maxChildren = personArray[i].numberOfChildren;
- *maxChildrenParent = personArray[i].name;
- }
- if (personArray[i].numberOfChildren == 0)
- {
- noChildren = 1;
- }
- }
- noChildrenAnswer = (char*)malloc(sizeof(char)*3);
- if (noChildren == 1)
- {
- noChildrenAnswer = "tak";
- }
- else
- {
- noChildrenAnswer = "nie";
- }
- return noChildrenAnswer;
- }
- int main()
- {
- struct person personArray[SIZE];
- char *parent;
- int i;
- personArray[0].name = (char*)malloc(sizeof(char)*3);
- personArray[0].name = "Ala";
- personArray[0].yearOfBirth = 1990;
- personArray[0].numberOfChildren = 0;
- personArray[0].firstChild = NULL;
- personArray[1].name = (char*)malloc(sizeof(char)*7);
- personArray[1].name = "Andrzej";
- personArray[1].yearOfBirth = 1991;
- personArray[1].numberOfChildren = 1;
- personArray[1].firstChild = NULL;
- personArray[2].name = (char*)malloc(sizeof(char)*6);
- personArray[2].name = "Marcin";
- personArray[2].yearOfBirth = 1992;
- personArray[2].numberOfChildren = 2;
- personArray[2].firstChild = NULL;
- personArray[3].name = (char*)malloc(sizeof(char)*5);
- personArray[3].name = "Troll";
- personArray[3].yearOfBirth = 1993;
- personArray[3].numberOfChildren = 3;
- personArray[3].firstChild = NULL;
- for(i = 0; i < SIZE; i++)
- {
- loadChildData(&personArray[i]);
- }
- showAll(personArray, SIZE);
- printf("Czy jest ktos bezdzietny: %s\n", findChildrenStatus(personArray, SIZE, &parent));
- printf("Nazwisko osoby majacej najwiecej dzieci: %s\n", parent);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement