Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_LENGTH 100
typedef struct team_info{
char* teamName;
int points;
struct speaker_info* first_speaker;
struct speaker_info* second_speaker;
}teamInfo;
typedef struct speaker_info{
char* speakerName;
int speakerPoints;
struct team_info* team;
}speakerInfo;
typedef struct teams_list{
teamInfo* info;
struct teams_list* next;
}teamsList;
typedef struct speakers_list{
speakerInfo* info;
struct speakers_list* next;
}speakersList;
typedef struct position_{
teamInfo* team;
int rank;
int first_speaker_points;
int second_speaker_points;
}position;
typedef struct room_info{
position Opening_Government;
position Opening_Opposition;
position Closing_Government;
position Closing_Opposition;
}roomInfo;
typedef struct rooms_list{
roomInfo* room;
struct rooms_list* next;
}roomsList;
void register_team(teamsList** teams,speakersList** speakers,char* teamName,char* first_speaker_name,char* second_speaker_name);
void print_teams(teamsList* teams);
void print_speakers(speakersList* speakers);
roomsList* make_draw(teamsList* teams);
void print_rooms(roomsList* rooms);
void update_chart(teamsList* teams, speakersList* speakers, roomsList* rooms);
void free_allocated_memory(teamsList* teams, speakersList* speakers);
void free_rooms_list(roomsList* rooms);
int main(){
int input,room_number;
teamsList* teams=NULL;
speakersList* speakers=NULL;
roomsList* rooms=NULL,*run;
char teamName[MAX_LENGTH],first_speaker[MAX_LENGTH],second_speaker[MAX_LENGTH];
do{
printf("Menu\n"
"**********************\n"
"1.Add a team\n"
"2.Print teams rank\n"
"3.Print speakers rank\n"
"4.Make draw\n"
"5.Enter results\n"
"6.Exit\n"
"Enter your choice:\n");
scanf("%d%*c",&input);
if(input==1){
printf("Enter team name:\n");
gets(teamName);
printf("Enter the first speaker's name:\n");
gets(first_speaker);
printf("Enter the second speaker's name:\n");
gets(second_speaker);
register_team(&teams,&speakers,teamName,first_speaker,second_speaker);
}
if(input==2)
print_teams(teams);
if(input==3)
print_speakers(speakers);
if(input==4){
if(!rooms)
rooms=make_draw(teams);
print_rooms(rooms);
}
if(input==5){
for(run=rooms,room_number=1;run;run=run->next,room_number++){
printf("Room no.%d Opening Government (Rank First Speaker Points Second Speaker Points)\n",room_number);
scanf("%d%d%d",&run->room->Opening_Government.rank,&run->room->Opening_Government.first_speaker_points,&run->room->Opening_Government.second_speaker_points);
printf("Room no.%d Opening Opposition (Rank First Speaker Points Second Speaker Points)\n",room_number);
scanf("%d%d%d",&run->room->Opening_Opposition.rank,&run->room->Opening_Opposition.first_speaker_points,&run->room->Opening_Opposition.second_speaker_points);
printf("Room no.%d Closing Government (Rank First Speaker Points Second Speaker Points)\n",room_number);
scanf("%d%d%d",&run->room->Closing_Government.rank,&run->room->Closing_Government.first_speaker_points,&run->room->Closing_Government.second_speaker_points);
printf("Room no.%d Closing Opposition (Rank First Speaker Points Second Speaker Points)\n",room_number);
scanf("%d%d%d",&run->room->Closing_Opposition.rank,&run->room->Closing_Opposition.first_speaker_points,&run->room->Closing_Opposition.second_speaker_points);
}
update_chart(teams,speakers,rooms);
free_rooms_list(rooms);
rooms=NULL;
}
printf("\n\n");
}
while(input!=6);
free_allocated_memory(teams,speakers);
free_rooms_list(rooms);
return 1;
}
void register_team(teamsList** teams,speakersList** speakers,char* teamName,char* first_speaker_name,char* second_speaker_name){
teamName=(char*)malloc(sizeof(char)*(strlen(teamName)+1));
first_speaker_name=(char*)malloc(sizeof(char)*(strlen( first_speaker_name)+1));
second_speaker_name=(char*)malloc(sizeof(char)*(strlen(second_speaker_name)+1));
}
void print_teams(teamsList* teams){
}
void print_speakers(speakersList* speakers){
}
void free_allocated_memory(teamsList* teams, speakersList* speakers){
}
roomsList* make_draw(teamsList* teams){
}
void print_rooms(roomsList* rooms){
}
void free_rooms_list(roomsList* rooms){
}
void update_chart(teamsList* teams, speakersList* speakers, roomsList* rooms){
}