| # | Problem | Pass Rate (passed user / total user) |
|---|---|---|
| 11413 | Rational Class |
|
| 12742 | Guess the gender |
|
Description
- Use integer variables to represent the private data of the class─the numerator and the denominator.
- Provide a constructor that enables an object of this class to be initialized when it's declared. The constructor should contain default values in case no initializers are provided and should store the fraction in reduced form. For example, the fraction 2/4 would be stored in object as 1 in the numerator and 2 in the denominator.
- Provide public member functions that perform each of the following tasks:
- Adding two Rational numbers. The result should be stored in reduced form.
- Multiplying two Rational numbers. The result should be stored in reduced form.
- Printing Rational numbers in form a/b, where a is the numerator and b is the denominator.
- You need to implement a private member function reduce() that will be used in your constructor and the about public arithmetic member functions to derive the required reduced form.
- function.h: Class definition of Rational.
- function.cpp: Member-function definitions of Rational.
- main.cpp: A driver program to test your class implementation.
#include <iostream>
#include "function.h" // include definition of class Rational
using namespace std;
int main()
{
char s1;
int s2, s3, s4, s5;
Rational x;
while(cin >>s1>>s2>>s3>>s4>>s5)
{
if(cin.eof())
{
break;
}
Rational c(s2, s3), d(s4, s5);
if(s1 == '+')
{
x = c.addition( d ); // adds object c and d; sets the value to x
x.printRational(); // prints rational object x
}
else if(s1 == '*')
{
x = c.multiplication( d ); // multiplies object c and d
x.printRational(); // prints rational object x
}
}
}
int gcd(int a, int b){
return (b == 0) ? a : gcd(b, a % b);
}
#ifndef RATIONAL_H
#define RATIONAL_H
class Rational
{
public:
Rational( int = 0, int = 1 ); // default constructor
Rational addition( const Rational & ) const; // function addition
Rational multiplication( const Rational & ) const; // function multi.
void printRational () const; // print rational format
private:
int numerator; // integer numerator
int denominator; // integer denominator
void reduce();
}; // end class Rational
int gcd(int a, int b);
#endif
- Step 1. Include function.h into function.cpp and then implement your function.cpp. (You don’t need to modify function.h and main.cpp)
- Step 2. Submit the code of function.cpp into submission block.
- Step 3. Check the results and debug your program if necessary.
Input
There are five strings in each line: S1 S2 S3 S4 S5
- S1 represents an operator (+,*).
- S2 and S3 represent the numerator and denominator of the first operand ,respectively.
- S4 and S5 represent the numerator and denominator of the second operand, respectively.
Output
For every given operation, your program should print the corresponding result followed by a new line character.
Sample Input Download
Sample Output Download
Partial Judge Code
11413.cppPartial Judge Header
11413.hTags
Discuss
Description
There is a game called "Guess the Gender",
the game rule is that given the number of people N and M hints,
a hint will be given as a pair of people's index,
represent that their genders are different,
in other words, a male and a female.
Your mission is to tell that if the given information is correct or not.
This is a partial judge problem,
and the problem is for exercising OOP,
so please use the given code to finish the problem,
and choose c++11 as the language on submission.
Since the code is using 'nullptr' instead of 'NULL', but you can just see 'nullptr' as 'NULL', they are kind of same.
To compile as c++11,
for those using codeblocks: `settings -> global compiler settings -> compiler flags -> check the option with [-std=c++11]`,
for those using devcpp: `Tools -> Compiler Options -> check 'Add the following commands when calling the compiler' -> add '-std=c++11'
for those using the command: `g++ -std=c++11 your_file.cpp`
ouo.
For Sample Input 1,
3 3
0 1
1 2
2 0
If person 0 is male, the first hint infers that person 1 is a female, then the second hint infer that person 2 is a male, but then the third hint contradicts.
If the person 0 is a female, it is not possible too.
So the answer should be "Not Possible".
4/26 supplement:
If you still have trouble in this problem after reading description and tracing codes, we show each step in the link, maybe it will be helpful for you :)
Input
The first line contains 2 numbers N, M,
N is the number of people and M is the number of hints.
Then the next M lines, each line contains 2 numbers X, Y,
represent the Xth person and Yth person have different gender.
The index starts at 0.
It is a guarantee that:
1 <= N <= 10^5,
1 <= M <= 10^6,
0 <= X, Y < N
Output
The output should be "Possible" if the given hint is correct,
or "Not Possible" if the given hint is not correct. (Without quotes)
Remember to add a newline character after the output.