int main()
{
    auto student0 = get_student(0);
    std::cout << "ID: 0, "
              << "GPA: " << std::get<0>(student0) << ", "
              << "grade: " << std::get<1>(student0) << ", "
              << "name: " << std::get<2>(student0) << '\n';
              
    auto student3 = get_student(3);
     std::cout << "ID: 3, "
              << "GPA: " << std::get<0>(student3) << ", "
              << "grade: " << std::get<1>(student3) << ", "
              << "name: " << std::get<2>(student3) << '\n';
 
    double gpa1;
    char grade1;
    std::string name1;
    std::tie(gpa1, grade1, name1) = get_student(1);
    std::cout << "ID: 1, "
              << "GPA: " << gpa1 << ", "
              << "grade: " << grade1 << ", "
              << "name: " << name1 << '\n';
    
    double gpa3;
    char grade3;
    std::string name3;
    std::tie(gpa3, grade3, name3) = get_student(3);
    
    std::cout << "ID: 3, "
              << "GPA: " << gpa3 << ", "
              << "grade: " << grade3 << ", "
              << "name: " << name3 << '\n';
}
Exemple #2
0
int remove_student_by_student_number(enrollment_node *enrollmentList, student_node *studentList, int student_number)
{
	student *myStudent = get_student(student_number, studentList);
	if (myStudent == NULL)
	{
		//didn't find the student
		return 0;
	}
	student_node *iterator = studentList;
	while (iterator->next->current->student_number != myStudent->student_number)
	{ //I don't have to check for NULL because I alredy know it contains it
		iterator = iterator->next;
	}
	student_node *studentToRemove = iterator->next;
	iterator->next = iterator->next->next; //remove from the student list
	enrollment_node *enrollment_iterator = enrollmentList;
	while(enrollment_iterator->next != NULL)
	{
		if (enrollment_iterator->next->current->e_student->student_number == studentToRemove->current->student_number)
		{
			enrollment_node *enrollment_to_delete = enrollment_iterator->next;
			enrollment_iterator->next=enrollment_iterator->next->next;
			free(enrollment_to_delete);
		}
		enrollment_iterator=enrollment_iterator->next;
		if (enrollment_iterator == NULL)
		{
			break;
		}
	}
	free(studentToRemove->current->firstName);
	free(studentToRemove->current);
	free(studentToRemove);
	return 1;
}
Exemple #3
0
void print_course_for_student(enrollment_node *enrollmentList, student_node *studentList,  int student_number)
{
	student *myStudent = get_student(student_number, studentList);
	if (myStudent == NULL)
	{
		printf("Student number %d: isn't in the database\n", student_number);
		return;
	}
	printf("Courses for student number %d:\n", student_number);
	course_node *studentsCourses = get_students_courses(enrollmentList, myStudent);
	print_courses(studentsCourses);
}
Exemple #4
0
void readEnrollments(enrollment_node *enrollmentList, student_node *studentList, course_node *courseList, char *s)
{
	int student_number;
	int course_number;
	if (sscanf(s, "E %d %d", &student_number, &course_number) > 0)
	{
		student *myStudent = get_student(student_number, studentList);
		course *myCourse = get_course(course_number, courseList);
		enrollment *newEnrollment = create_enrollment(myStudent, myCourse);
		add_enrollment(enrollmentList, newEnrollment);
	}
}
    int main()
    {
        vector<tuple<double, char, std::string>> vectuple;
        auto student0 = get_student(0);
        vectuple.push_back(student0);

        std::cout << "ID: 0, "
            << "GPA: " << std::get<0>(student0) << ", "
            << "grade: " << std::get<1>(student0) << ", "
            << "name: " << std::get<2>(student0) << '\n';

        double gpa1;
        char grade1;
        std::string name1;
        std::tie(gpa1, grade1, name1) = get_student(1);
        std::cout << "ID: 1, "
            << "GPA: " << gpa1 << ", "
            << "grade: " << grade1 << ", "
            << "name: " << name1 << '\n';

        auto student1 = std::tie(gpa1, grade1, name1);
        vectuple.push_back(student1);

        auto it = find_if(vectuple.begin(), vectuple.end(), [](tuple<double, char, std::string> const & elem)
        {
            return std::get<0>(elem) == 3.8;
        });

        //for (auto it = vectuple.begin(); it != vectuple.end(); ++it)
        {
           cout << "GPA: " << std::get<0>(*it) << ", "
               << "grade: " << std::get<1>(*it) << ", "
               << "name: " << std::get<2>(*it) << '\n';
        }
        return 0;
    }
Exemple #6
0
int enrol_student(enrollment_node *enrollmentList, student_node *studentList, course_node *courseList, int student_number, int course_number)
{
	student *myStudent = get_student(student_number, studentList);
	if (myStudent == NULL)
	{
		//student doesn't exist
		printf("Student doesn't exist\n");
		return 0;
	}
	course *myCourse = get_course(course_number, courseList);
	if (myCourse == NULL)
	{
		//course doesn't exist
		printf("Course doesn't exist\n");
		return 0;
	}
	enrollment *myEnrollment = create_enrollment(myStudent, myCourse);
	add_enrollment(enrollmentList, myEnrollment);
	return 1;
}
Exemple #7
0
int main(void)
{ 

     //declare the array of students
     apvector <STUDENT_TYPE> list(10); 

    // input the list of students
    for(int i = 0; i < 10; i++)
    {
         cout<<"Please enter information for student " << i+1 << endl << endl;
         list[ i ] = get_student( );  //use function to get individual info
    }

     // print the array of students one struct at a time
     for(int j = 0; j < 10; j++)
     {
          print_student(list [ j ] );
     }

     return 0;
}
Exemple #8
0
int main() {

	// Set of student id, name, gpa,grade
	std::set<std::tuple<int,std::string,char,double>> myset;


	// Current
	{
		bool success;
		std::set<std::tuple<int,std::string,char,double>>::iterator iterator;

		std::tie(iterator, success) = myset.insert(std::make_tuple(1,"John",'A',4.0));

		if (success) {
			int id;
			std::string name;
			char grade;
			double gpa;

			std::tie(id, name, grade, gpa) = *iterator;
			std::cout << "Successfully inserted " << id << " " << " " << name << " " << grade << " " << gpa << "\n";
		}
	}


	// auto_tie
	{
		auto r = AUTO_TIE(iterator, success) = myset.insert(std::make_tuple(2,"Raja",'B',3.1)); 

		if (r.success) {
			auto s = AUTO_TIE_REF(id, name, grade, gpa) = *r.iterator;
			std::cout << "Successfully inserted " << s.id << " " << " " << s.name << " " << s.grade << " " << s.gpa << "\n";
		}
	}


	auto s = AUTO_TIE(id, gpa, name) = get_student();

	std::cout << "name: " << s.name << " id: " << s.id << " gpa: " << *s.gpa << "\n";

	// Writing the above without macros
	// The AUTO_TIE(id,gpa,name) above essentially expands to the auto_tie function call below (without the id_gpa_name part)

	auto id_gpa_name = auto_tie([](auto id_, auto gpa_, auto name_) {
		struct auto_struct {
			decltype(id_) id;
			decltype(gpa_) gpa;
			decltype(name_) name;
		};
		return static_cast<auto_struct*>(nullptr);
	});

	auto s2 = id_gpa_name = get_student();
	std::cout << "name: " << s2.name << " id: " << s2.id << " gpa: " << *s2.gpa << "\n";


	// Should be error here
	// auto s2 = AUTO_TIE_REF(id, gpa, name) = get_student();
	
	std::map<std::string, int> m = { { "John",1 } };

	for (auto &p : m) {
		auto r = AUTO_TIE_REF(key, value) = p;
		std::cout << r.key << " " << r.value << "\n";
		r.value = r.value * 2;
	}
	for (auto &p : m) {
		auto r = AUTO_TIE_REF(key, value) = p;
		std::cout << r.key << " " << r.value << "\n";
		r.value = r.value * 2;
	}

}