1. Create a class called Faculty that includes three pieces of information as data members:

a. a first name (type string)
b. a last name (type string)
c. a monthly salary (type int).
They should be private.

2. This class should have a constructor that initializes the three data members.

3. Provide a public set function and a public get function for each data member. If the monthly salary is not positive, set it to 0.

4. In the main function, create two Faculty objects and display each object’s yearly salary.

5. Then give each Faculty a 10 percent raise and display each Faculty’s yearly salary again.

To solve this problem, you will need to create a class called Faculty with three private data members: a first name (string), a last name (string), and a monthly salary (int). The class should have a constructor that initializes these three data members. Additionally, you need to provide public set and get functions for each data member, with a check to ensure that the monthly salary is not negative (if it is, set it to 0). Finally, in the main function, you will create two Faculty objects and display each object's yearly salary. Then, you will give each Faculty a 10 percent raise and display each object's yearly salary again. Here is the code implementation:

```c++
#include <iostream>
#include <string>
using namespace std;

class Faculty {
private:
string firstName;
string lastName;
int monthlySalary;

public:
Faculty(string first, string last, int salary) {
firstName = first;
lastName = last;
monthlySalary = salary;
}

void setFirstName(string first) {
firstName = first;
}

string getFirstName() const {
return firstName;
}

void setLastName(string last) {
lastName = last;
}

string getLastName() const {
return lastName;
}

void setMonthlySalary(int salary) {
if (salary >= 0) {
monthlySalary = salary;
} else {
monthlySalary = 0;
}
}

int getMonthlySalary() const {
return monthlySalary;
}

int getYearlySalary() const {
return monthlySalary * 12;
}

void giveRaise() {
monthlySalary = monthlySalary + (monthlySalary * 0.1);
}
};

int main() {
Faculty faculty1("John", "Doe", 5000);
Faculty faculty2("Jane", "Smith", -2000);

// Display each object's yearly salary
cout << "Yearly Salary for " << faculty1.getFirstName() << " " << faculty1.getLastName() << ": " << faculty1.getYearlySalary() << endl;
cout << "Yearly Salary for " << faculty2.getFirstName() << " " << faculty2.getLastName() << ": " << faculty2.getYearlySalary() << endl << endl;

// Give each object a 10 percent raise
faculty1.giveRaise();
faculty2.giveRaise();

// Display each object's yearly salary again
cout << "Yearly Salary after a 10% raise for " << faculty1.getFirstName() << " " << faculty1.getLastName() << ": " << faculty1.getYearlySalary() << endl;
cout << "Yearly Salary after a 10% raise for " << faculty2.getFirstName() << " " << faculty2.getLastName() << ": " << faculty2.getYearlySalary() << endl;

return 0;
}
```

In this code, we define the Faculty class with private data members and public member functions for getting and setting these data members. We also define a getYearlySalary function to calculate the yearly salary based on the monthly salary. The giveRaise function gives each object a 10% raise. Then, in the main function, we create two Faculty objects, display their yearly salaries, give them a raise, and display their yearly salaries again.