Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- struct Referee
- {
- int ID;
- char* name;
- struct Referee *next;
- };
- struct Match
- {
- struct Match *next;
- struct Referee *firstReferee;
- struct Referee *secondReferee;
- struct Referee *thirdReferee;
- };
- void loadMatchData(struct Match **matchPointer)
- {
- (*matchPointer)->next = NULL;
- (*matchPointer)->firstReferee = NULL;
- (*matchPointer)->secondReferee = NULL;
- (*matchPointer)->thirdReferee = NULL;
- }
- void makeMatchList(struct Match **matchHead, int numberOfTeams)
- {
- int i, numberOfMatches;
- struct Match *pointer;
- pointer = *matchHead;
- if (numberOfTeams <= 1)
- {
- numberOfMatches = 0;
- }
- else
- {
- numberOfMatches = numberOfTeams * (numberOfTeams - 1) / 2;
- }
- if (numberOfMatches > 0)
- {
- pointer = (struct Match*)malloc(sizeof(struct Match));
- loadMatchData(&pointer);
- *matchHead = pointer;
- for (i = 1; i < numberOfMatches; i++)
- {
- pointer->next = (struct Match*)malloc(sizeof(struct Match));
- pointer = pointer->next;
- loadMatchData(&pointer);
- }
- }
- }
- void loadRefereeData(struct Referee **refereePointer)
- {
- char refereeName[80];
- int length;
- (*refereePointer)->next = NULL;
- printf("Wprowadz ID: ");
- scanf("%d", &((*refereePointer)->ID));
- printf("Wprowadz nazwisko sedziego: ");
- scanf("%s", refereeName);
- length = strlen(refereeName);
- (*refereePointer)->name = (char*)malloc(sizeof(char)*(length + 1));
- strcpy((*refereePointer)->name, refereeName);
- printf("\n");
- }
- void addNewReferee(struct Referee **refereeHead)
- {
- struct Referee *pointer;
- pointer = *refereeHead;
- if (pointer == NULL)
- {
- pointer = (struct Referee*)malloc(sizeof(struct Referee));
- loadRefereeData(&pointer);
- *refereeHead = pointer;
- }
- else
- {
- while(pointer->next != NULL)
- {
- pointer = pointer->next;
- }
- pointer->next = (struct Referee*)malloc(sizeof(struct Referee));
- pointer = pointer->next;
- loadRefereeData(&pointer);
- }
- }
- void loadReferees(struct Referee **refereeHead)
- {
- int choose;
- printf("Wprowadz pierwszego sedziego.\n");
- addNewReferee(refereeHead);
- printf("1. Wprowadz kolejnego sedziego.\n");
- printf("2. Zakoncz wprowadzanie\n");
- scanf("%d", &choose);
- while(choose == 1)
- {
- addNewReferee(refereeHead);
- printf("1. Wprowadz kolejnego sedziego.\n");
- printf("2. Zakoncz wprowadzanie\n");
- scanf("%d", &choose);
- }
- }
- void addRefereesToMatches(struct Match **matchHead, struct Referee *refereeHead)
- {
- struct Match *matchPointer;
- struct Referee *refereePointer;
- matchPointer = *matchHead;
- refereePointer = refereeHead;
- while (matchPointer != NULL)
- {
- if (refereePointer != NULL)
- {
- matchPointer->firstReferee = refereePointer;
- refereePointer = refereePointer->next;
- }
- else
- {
- refereePointer = refereeHead;
- matchPointer->firstReferee = refereePointer;
- refereePointer = refereePointer->next;
- }
- if (refereePointer != NULL)
- {
- matchPointer->secondReferee = refereePointer;
- refereePointer = refereePointer->next;
- }
- else
- {
- refereePointer = refereeHead;
- matchPointer->secondReferee = refereePointer;
- refereePointer = refereePointer->next;
- }
- if (refereePointer != NULL)
- {
- matchPointer->thirdReferee = refereePointer;
- refereePointer = refereePointer->next;
- }
- else
- {
- refereePointer = refereeHead;
- matchPointer->thirdReferee = refereePointer;
- refereePointer = refereePointer->next;
- }
- matchPointer = matchPointer->next;
- }
- }
- void showAll(struct Match *matchHead)
- {
- int matchNumber;
- matchNumber = 1;
- while(matchHead != NULL)
- {
- printf("Mecz numer: %d\n", matchNumber);
- printf("Sedzia 1 - ID: %d, nazwisko: %s\n", matchHead->firstReferee->ID, matchHead->firstReferee->name);
- printf("Sedzia 2 - ID: %d, nazwisko: %s\n", matchHead->secondReferee->ID, matchHead->secondReferee->name);
- printf("Sedzia 3 - ID: %d, nazwisko: %s\n\n", matchHead->thirdReferee->ID, matchHead->thirdReferee->name);
- matchHead = matchHead->next;
- matchNumber++;
- }
- }
- int main()
- {
- struct Match *matchHead;
- struct Referee *refereeHead;
- int nd;
- matchHead = NULL;
- refereeHead = NULL;
- printf("Podaj liczbe druzyn: ");
- scanf("%d", &nd);
- makeMatchList(&matchHead, nd);
- loadReferees(&refereeHead);
- addRefereesToMatches(&matchHead, refereeHead);
- showAll(matchHead);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement