PROJECT 3 DESCRIPTION: Write a C++ class definition called VOIP_FSM which will e
ID: 3591566 • Letter: P
Question
PROJECT 3 DESCRIPTION: Write a C++ class definition called VOIP_FSM which will evaluate the student performance. The prototype for the class VOIP_FSM is defined as follows: class VOIP_FSM{ public:
// public methods for this class VOIP_FSM(void);
// example: g.VOIP_FSM();
// constructor;
// returns nothing (void) void VOIP_FSM_PRINT(void);
// example: g.VOIP_FSM_PRINT(void); // method to print state information;
// returns no values; void SORT_STATE_NAMES(int); // example: g.SORT_STATE_NAMES(x); // method to sort the states based on their // names; sort the corresponding edges also; // the sorted states are stored in the private data; // if x is 1, sorting is in alphabetical order; // if x is -1, sorting is in reverse alphabetical order; // returns no values; void FIND_MAX(void); // example: g.FIND_MAX(); // method to find the state with the maximum outdegree; // returns no values; void ADD_EDGE(char *, int, int, char *); // example: g.ADD_EDGE("START", x, y, "END"); // method to add an edge from state "START" to // state "END" with input x and output y; // returns no values; void VERIFY_EDGE(char *, int, int, char *); // example: g.VERIFY_EDGE("START", x, y, "END"); // method to verify an edge from state "START" to // state "END" with input x and output y; // returns no values; private: // private var to be used by this class only (not from main) int n; // no of states; int state_id[10]; // ids for states; char state_name[10][20]; // names for states (20 chars max for each); int out_degree[10]; // no of outgoing edges from a single state; int edge_inputs[10][5]; // inputs for the edges leaving each state; int edge_outputs[10][5]; // outputs for the edges leaving each state; int edge_tail_state_id[10][5]; // ids for the ending states for the // edges leaving each state; }; The objects of VOIP_FSM class will read the input values from a file called in.3 given with the following format: n state_id_0 state_name_0 x edge_input_0_0 edge_output_0_0 tail_state_id_0_0 ... edge_input_0_x edge_output_0_x tail_state_id_0_x ... state_id_n-1 state_name_n-1 z edge_input_n-1_0 edge_output_n-1_0 tail_state_id_n-1_0 ... edge_input_n-1_z edge_output_n-1_z tail_state_id_n-1_z where n (1<= m <= 10) is the number of states, state_id_i (between 0 and 999 inclusive) is the id for a given states, state_name_0 and state_name_n-1 are the names for the states, x and z (1<= x,z <= 5) are the number of edges leaving state 0 and n-1, respectively, edge_input_i_j is the input for the jth outgoing edge from the ith state, edge_output_i_j is the output for the jth outgoing edge from the ith state, and tail_state_i_j is the id for the next state for the jth outgoing edge from the ith state. ____________________________________ An example of VOIP_FSM constructor is as follows: VOIP_FSM g(); which instantiates an object g of class VOIP_FSM. The constructor should read the contents of the in.3 file and populate the private data elements. The output to out.3 is: ++++++++++++++++ START ++++++++++++++++++++++ CONTSTRUCTOR SUCCESSFULLY INITIATED AN OBJECT. THERE ARE n STATES IN THIS VOIP_FSM ++++++++++++++++ END ++++++++++++++++++++++ MAKE SURE THAT EVERY LINE TO out.3 ENDS WITH A endl. ____________________________________ The definition of VOIP_FSM_PRINT method is as follows: g.VOIP_FSM_PRINT(); where g is a object of class VOIP_FSM. This method should print the following into out.3: ++++++++++++++++ START ++++++++++++++++++++++ OUTPUT FROM VOIP_FSM_PRINT INTERFACE: THIS VOIP_FSM HAS n STATES STATE id_0 (state_name_0) HAS x OUTGOING EDGES AS FOLLOWS: EDGE INPUT: in_0_0 EDGE OUTPUT: out_0_0 TAIL STATE: next_state_0_0 ... EDGE INPUT: in_0_x EDGE OUTPUT: out_0_x TAIL STATE: next_state_0_x ... STATE id_n-1 (state_name_n-1) HAS z OUTGOING EDGES AS FOLLOWS: EDGE INPUT: in_n-1_0 EDGE OUTPUT: out_n-1_0 TAIL STATE: next_state_n-1_0 ... EDGE INPUT: in_n-1_z EDGE OUTPUT: out_n-1_z TAIL STATE: next_state_n-1_z ++++++++++++++++ END ++++++++++++++++++++++ where n is the number of states and x, and z are the outdegrees for states 0, and n-1, respectively. MAKE SURE THAT EVERY LINE TO out.3 ENDS WITH A endl. ____________________________________ The definition of SORT_STATE_NAMES method is as follows: g.SORT_STATE_NAMES(x); where g is a object of class VOIP_FSM, and x is an integer. If x == 1, this method will sort the states in alphabetical order. Make sure that the sorted states, their corresponding edges are stored in the private data elements. The output to out.3 file is: ++++++++++++++++ START ++++++++++++++++++++++ OUTPUT FROM SORT_STATE_NAMES INTERFACE: FSM STATES ARE SORTED IN ALPHABETICAL ORDER. ++++++++++++++++ END ++++++++++++++++++++++ If x == -1, this method will sort the states in reverse alphabetical order. Make sure that the sorted states, their corresponding edges are stored in the private data elements. The output to out.3 file is: ++++++++++++++++ START ++++++++++++++++++++++ OUTPUT FROM SORT_STATE_NAMES INTERFACE: FSM STATES ARE SORTED IN REVERSE ALPHABETICAL ORDER. ++++++++++++++++ END ++++++++++++++++++++++ If x has any other value, the output to out.3 is: ++++++++++++++++ START ++++++++++++++++++++++ OUTPUT FROM SORT_STATE_NAMES INTERFACE: INPUT ERROR. ++++++++++++++++ END ++++++++++++++++++++++ MAKE SURE THAT EVERY LINE TO out.3 ENDS WITH A endl. ____________________________________ The definition of FIND_MAX method is as follows: g.FIND_MAX(); where g is a object of class VOIP_FSM. This method will find the state with the maximum outdgree with the following output to out.3 file: ++++++++++++++++ START ++++++++++++++++++++++ OUTPUT FROM FIND_MAX INTERFACE: THE STATE WITH MAXIMUM OUTDEGREE IS state_name_w OUTDEGREE IS outdegree_w ++++++++++++++++ END ++++++++++++++++++++++ where state_name_w is the name of the state with the maximum outdgree. For simplicity, there will be only one state with maximum outdegree. ____________________________________ The definition of ADD_EDGE method is as follows: g.ADD_EDGE("START", x, y, "END"); where g is a object of class VOIP_FSM, and x, and y are integers, and "START" and "END" are character strings. This method will add an edge from state "START" to state "END" with input x and output y. The output to out.3 file is: ++++++++++++++++ START ++++++++++++++++++++++ OUTPUT FROM ADD_EDGE INTERFACE: A NEW EDGE IS ADDED TO STATE start_state_name AS FOLLOWS: EDGE INPUT: x EDGE OUTPUT: y TAIL STATE: end_state_name ++++++++++++++++ END ++++++++++++++++++++++ If state "START", or "END" or both do not exit, the output to out.3 is: ++++++++++++++++ START ++++++++++++++++++++++ OUTPUT FROM ADD_EDGE INTERFACE: STATE MISMATCH. ++++++++++++++++ END ++++++++++++++++++++++ If there is an input error in any of "START", x, y, and/or "END" values, the output to out.3 is: ++++++++++++++++ START ++++++++++++++++++++++ OUTPUT FROM ADD_EDGE INTERFACE: INPUT ERROR. ++++++++++++++++ END ++++++++++++++++++++++ MAKE SURE THAT EVERY LINE TO out.3 ENDS WITH A endl. ____________________________________ The definition of VERIFY_EDGE method is as follows: g.VERIFY_EDGE("START", x, y, "END"); where g is a object of class VOIP_FSM, and x, and y are integers, and "START" and "END" are character strings. This method will verify that there is an edge from state "START" to state "END" with input x and output y. The output to out.3 file is: ++++++++++++++++ START ++++++++++++++++++++++ OUTPUT FROM VERIFY_EDGE INTERFACE: THERE IS AN EDGE FROM STATE state_name_w AS FOLLOWS: EDGE INPUT: x EDGE OUTPUT: y TAIL STATE: state_name_z ++++++++++++++++ END ++++++++++++++++++++++ where state_name_w and state_name_z are the starting and ending states of the edge. If there is no such edge in the FSM, the output to out.3 is: ++++++++++++++++ START ++++++++++++++++++++++ OUTPUT FROM VERIFY_EDGE INTERFACE: THERE IS NO EDGE FROM STATE state_name_w FOLLOWS: EDGE INPUT: x EDGE OUTPUT: y TAIL STATE: state_name_z ++++++++++++++++ END ++++++++++++++++++++++ If state "START", or "END" or both do not exit, the output to out.3 is: ++++++++++++++++ START ++++++++++++++++++++++ OUTPUT FROM VERIFY_EDGE INTERFACE: STATE MISMATCH. ++++++++++++++++ END ++++++++++++++++++++++ If there is an input error in any of "START", x, y, and/or "END" values, the output to out.3 is: ++++++++++++++++ START ++++++++++++++++++++++ OUTPUT FROM VERIFY_EDGE INTERFACE: INPUT ERROR. ++++++++++++++++ END ++++++++++++++++++++++ MAKE SURE THAT EVERY LINE TO out.3 ENDS WITH A endl. :::::::::::::: EXAMPLE 1 ::::::::::::::::::::: ---------CONTENTS OF main1.cc FILE:----------- #include #include "p3.h" // example program: main1.cc int main () { VOIP_FSM g; // instantiate an object g which is of class STATE // read the data from in.3 file into private data g.SORT_STATE_NAMES(1); // Sort states in alphabetical order; g.VOIP_FSM_PRINT(); // print the private data into out.3 file return 0; } ---------CONTENTS OF in.3 FILE:--------------- 4 10 TEN 1 100 500 11 11 ELEVEN 3 101 501 12 102 502 13 103 503 10 12 TWELVE 2 102 502 13 103 503 10 13 THIRTEEN 1 103 503 10 ---------EXPECTED CONTENTS OF out.3 FILE:----- ++++++++++++++++ START ++++++++++++++++++++++ CONTSTRUCTOR SUCCESSFULLY INITIATED AN OBJECT. THERE ARE 4 STATES IN THIS VOIP_FSM ++++++++++++++++ END ++++++++++++++++++++++ ++++++++++++++++ START ++++++++++++++++++++++ OUTPUT FROM SORT_STATE_NAMES INTERFACE: FSM STATES ARE SORTED IN ALPHABETICAL ORDER. ++++++++++++++++ END ++++++++++++++++++++++ ++++++++++++++++ START ++++++++++++++++++++++ THERE ARE 4 STATES IN THIS VOIP_FSM OUTPUT FROM VOIP_FSM_PRINT INTERFACE: THIS VOIP_FSM HAS 4 STATES STATE 11 (ELEVEN) HAS 3 OUTGOING EDGES AS FOLLOWS: EDGE INPUT: 101 EDGE OUTPUT: 501 TAIL STATE: 12 EDGE INPUT: 102 EDGE OUTPUT: 502 TAIL STATE: 13 EDGE INPUT: 103 EDGE OUTPUT: 503 TAIL STATE: 10 STATE 10 (TEN) HAS 1 OUTGOING EDGES AS FOLLOWS: EDGE INPUT: 100 EDGE OUTPUT: 500 TAIL STATE: 11 STATE 13 (THIRTEEN) HAS 1 OUTGOING EDGES AS FOLLOWS: EDGE INPUT: 103 EDGE OUTPUT: 503 TAIL STATE: 10 STATE 12 (TWELVE) HAS 3 OUTGOING EDGES AS FOLLOWS: EDGE INPUT: 102 EDGE OUTPUT: 502 TAIL STATE: 13 EDGE INPUT: 103 EDGE OUTPUT: 503 TAIL STATE: 10 EDGE INPUT: 104 EDGE OUTPUT: 504 TAIL STATE: 10 ++++++++++++++++ END ++++++++++++++++++++++ :::::::::::::: EXAMPLE 2 ::::::::::::::::::::: ---------CONTENTS OF main2.cc FILE:----------- #include #include "p3.h" // example program: main2.cc int main () { VOIP_FSM g; // instantiate an object g which is of class STATE // read the data from in.3 file into private data g.FIND_MAX(); // find the state with the max out-dgree g.VOIP_FSM_PRINT(); // print the private data into out.3 file return 0; } ---------CONTENTS OF in.3 FILE:--------------- 4 10 TEN 1 100 500 11 11 ELEVEN 3 101 501 12 102 502 13 103 503 10 12 TWELVE 2 102 502 13 103 503 10 13 THIRTEEN 1 103 503 10 ---------EXPECTED CONTENTS OF out.3 FILE:----- ++++++++++++++++ START ++++++++++++++++++++++ CONTSTRUCTOR SUCCESSFULLY INITIATED AN OBJECT. THERE ARE 4 STATES IN THIS VOIP_FSM ++++++++++++++++ END ++++++++++++++++++++++ ++++++++++++++++ START ++++++++++++++++++++++ OUTPUT FROM FIND_MAX INTERFACE: THE STATE WITH MAXIMUM OUTDEGREE IS ELEVEN OUTDEGREE IS 3 ++++++++++++++++ END ++++++++++++++++++++++ ++++++++++++++++ START ++++++++++++++++++++++ THERE ARE 4 STATES IN THIS VOIP_FSM OUTPUT FROM VOIP_FSM_PRINT INTERFACE: THIS VOIP_FSM HAS 4 STATES STATE 10 (TEN) HAS 1 OUTGOING EDGES AS FOLLOWS: EDGE INPUT: 100 EDGE OUTPUT: 500 TAIL STATE: 11 STATE 11 (ELEVEN) HAS 3 OUTGOING EDGES AS FOLLOWS: EDGE INPUT: 101 EDGE OUTPUT: 501 TAIL STATE: 12 EDGE INPUT: 102 EDGE OUTPUT: 502 TAIL STATE: 13 EDGE INPUT: 103 EDGE OUTPUT: 503 TAIL STATE: 10 STATE 12 (TWELVE) HAS 3 OUTGOING EDGES AS FOLLOWS: EDGE INPUT: 102 EDGE OUTPUT: 502 TAIL STATE: 13 EDGE INPUT: 103 EDGE OUTPUT: 503 TAIL STATE: 10 EDGE INPUT: 104 EDGE OUTPUT: 504 TAIL STATE: 10 STATE 13 (THIRTEEN) HAS 1 OUTGOING EDGES AS FOLLOWS: EDGE INPUT: 103 EDGE OUTPUT: 503 TAIL STATE: 10 ++++++++++++++++ END ++++++++++++++++++++++ :::::::::::::: EXAMPLE 3 ::::::::::::::::::::: ---------CONTENTS OF main3.cc FILE:----------- #include #include "p3.h" // example program: main3.cc int main () { VOIP_FSM g; // instantiate an object g which is of class STATE // read the data from in.3 file into private data g.ADD_EDGE("TEN", 104, 504, "TWELVE"); // add a new edge to TEN g.VOIP_FSM_PRINT(); // print the private data into out.3 file return 0; } ---------CONTENTS OF in.3 FILE:--------------- 4 10 TEN 1 100 500 11 11 ELEVEN 3 101 501 12 102 502 13 103 503 10 12 TWELVE 2 102 502 13 103 503 10 13 THIRTEEN 1 103 503 10 ---------EXPECTED CONTENTS OF out.3 FILE:----- ++++++++++++++++ START ++++++++++++++++++++++ CONTSTRUCTOR SUCCESSFULLY INITIATED AN OBJECT. THERE ARE 4 STATES IN THIS VOIP_FSM ++++++++++++++++ END ++++++++++++++++++++++ ++++++++++++++++ START ++++++++++++++++++++++ OUTPUT FROM ADD_EDGE INTERFACE: A NEW EDGE IS ADDED TO STATE TEN AS FOLLOWS: EDGE INPUT: 104 EDGE OUTPUT: 504 TAIL STATE: TWELVE ++++++++++++++++ END ++++++++++++++++++++++ ++++++++++++++++ START ++++++++++++++++++++++ THERE ARE 4 STATES IN THIS VOIP_FSM OUTPUT FROM VOIP_FSM_PRINT INTERFACE: THIS VOIP_FSM HAS 4 STATES STATE 10 (TEN) HAS 2 OUTGOING EDGES AS FOLLOWS: EDGE INPUT: 100 EDGE OUTPUT: 500 TAIL STATE: 11 EDGE INPUT: 104 EDGE OUTPUT: 504 TAIL STATE: 12 STATE 11 (ELEVEN) HAS 3 OUTGOING EDGES AS FOLLOWS: EDGE INPUT: 101 EDGE OUTPUT: 501 TAIL STATE: 12 EDGE INPUT: 102 EDGE OUTPUT: 502 TAIL STATE: 13 EDGE INPUT: 103 EDGE OUTPUT: 503 TAIL STATE: 10 STATE 12 (TWELVE) HAS 3 OUTGOING EDGES AS FOLLOWS: EDGE INPUT: 102 EDGE OUTPUT: 502 TAIL STATE: 13 EDGE INPUT: 103 EDGE OUTPUT: 503 TAIL STATE: 10 EDGE INPUT: 104 EDGE OUTPUT: 504 TAIL STATE: 10 STATE 13 (THIRTEEN) HAS 1 OUTGOING EDGES AS FOLLOWS: EDGE INPUT: 103 EDGE OUTPUT: 503 TAIL STATE: 10 ++++++++++++++++ END ++++++++++++++++++++++ :::::::::::::: EXAMPLE 4 ::::::::::::::::::::: ---------CONTENTS OF main4.cc FILE:----------- #include #include "p3.h" // example program: main4.cc int main () { VOIP_FSM g; // instantiate an object g which is of class STATE // read the data from in.3 file into private data g.ADD_EDGE("TEN", 104, 504, "TWELVE"); // add a new edge to TEN g.VERIFY_EDGE("TEN", 104, 504, "TWELVE"); // verify the new edge g.VOIP_FSM_PRINT(); // print the private data into out.3 file return 0; } ---------CONTENTS OF in.3 FILE:--------------- 4 10 TEN 1 100 500 11 11 ELEVEN 3 101 501 12 102 502 13 103 503 10 12 TWELVE 2 102 502 13 103 503 10 13 THIRTEEN 1 103 503 10 ---------EXPECTED CONTENTS OF out.3 FILE:----- ++++++++++++++++ START ++++++++++++++++++++++ CONTSTRUCTOR SUCCESSFULLY INITIATED AN OBJECT. THERE ARE 4 STATES IN THIS VOIP_FSM ++++++++++++++++ END ++++++++++++++++++++++ ++++++++++++++++ START ++++++++++++++++++++++ OUTPUT FROM ADD_EDGE INTERFACE: A NEW EDGE IS ADDED TO STATE TEN AS FOLLOWS: EDGE INPUT: 104 EDGE OUTPUT: 504 TAIL STATE: TWELVE ++++++++++++++++ END ++++++++++++++++++++++ ++++++++++++++++ START ++++++++++++++++++++++ OUTPUT FROM VERIFY_EDGE INTERFACE: THERE IS AN EDGE FROM STATE TEN AS FOLLOWS: EDGE INPUT: 104 EDGE OUTPUT: 504 TAIL STATE: TWELVE ++++++++++++++++ END ++++++++++++++++++++++ ++++++++++++++++ START ++++++++++++++++++++++ THERE ARE 4 STATES IN THIS VOIP_FSM OUTPUT FROM VOIP_FSM_PRINT INTERFACE: THIS VOIP_FSM HAS 4 STATES STATE 10 (TEN) HAS 2 OUTGOING EDGES AS FOLLOWS: EDGE INPUT: 100 EDGE OUTPUT: 500 TAIL STATE: 11 EDGE INPUT: 104 EDGE OUTPUT: 504 TAIL STATE: 12 STATE 11 (ELEVEN) HAS 3 OUTGOING EDGES AS FOLLOWS: EDGE INPUT: 101 EDGE OUTPUT: 501 TAIL STATE: 12 EDGE INPUT: 102 EDGE OUTPUT: 502 TAIL STATE: 13 EDGE INPUT: 103 EDGE OUTPUT: 503 TAIL STATE: 10 STATE 12 (TWELVE) HAS 3 OUTGOING EDGES AS FOLLOWS: EDGE INPUT: 102 EDGE OUTPUT: 502 TAIL STATE: 13 EDGE INPUT: 103 EDGE OUTPUT: 503 TAIL STATE: 10 EDGE INPUT: 104 EDGE OUTPUT: 504 TAIL STATE: 10 STATE 13 (THIRTEEN) HAS 1 OUTGOING EDGES AS FOLLOWS: EDGE INPUT: 103 EDGE OUTPUT: 503 TAIL STATE: 10 ++++++++++++++++ END ++++++++++++++++++++++
Explanation / Answer
i know the code so far
student.h
#ifndef STUDENT_H
#define STUDENT_H
#include <string>
using namespace std;
class Student
{
private:
int ID;
string name;
double GPA;
char gender;
public:
Student();
Student(int ID, string name, double GPA, char gender);
void setStudent(int ID, string name, double GPA, char gender);
int getID();
string getName();
double getGPA();
char getGender();
void print();
};
#endif
student.cpp
#include "Student.h"
#include <iostream>
using namespace std;
Student :: Student()
{
ID = 0;
name = "";
GPA = 0;
gender = ' ';
}
Student :: Student(int ID, string name, double GPA, char gender)
{
this -> ID = ID;
this -> name = name;
this -> GPA = GPA;
this -> gender = gender;
}
void Student :: setStudent(int ID, string name, double GPA, char gender)
{
this -> ID = ID;
this -> name = name;
this -> GPA = GPA;
this -> gender = gender;
}
int Student :: getID()
{
return ID;
}
string Student :: getName()
{
return name;
}
double Student :: getGPA()
{
return GPA;
}
char Student :: getGender()
{
return gender;
}
void Student :: print()
{
cout << "ID : " << ID << endl;
cout << "Name : " << name << endl;
cout << "GPA : " << GPA << endl;
cout << "Gender : " << gender << endl;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.