Skip to content

Commit 76e4a9d

Browse files
committed
first commit
0 parents  commit 76e4a9d

File tree

5 files changed

+255
-0
lines changed

5 files changed

+255
-0
lines changed

.gitignore

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# This file is used to ignore files which are generated
2+
# ----------------------------------------------------------------------------
3+
4+
*~
5+
*.autosave
6+
*.a
7+
*.core
8+
*.moc
9+
*.o
10+
*.obj
11+
*.orig
12+
*.rej
13+
*.so
14+
*.so.*
15+
*_pch.h.cpp
16+
*_resource.rc
17+
*.qm
18+
.#*
19+
*.*#
20+
core
21+
!core/
22+
tags
23+
.DS_Store
24+
*.debug
25+
Makefile*
26+
*.prl
27+
*.app
28+
moc_*.cpp
29+
ui_*.h
30+
qrc_*.cpp
31+
Thumbs.db
32+
*.res
33+
*.rc
34+
/.qmake.cache
35+
/.qmake.stash
36+
37+
# qtcreator generated files
38+
*.pro.user*
39+
40+
# xemacs temporary files
41+
*.flc
42+
43+
# Vim temporary files
44+
.*.swp
45+
46+
# Visual Studio generated files
47+
*.ib_pdb_index
48+
*.idb
49+
*.ilk
50+
*.pdb
51+
*.sln
52+
*.suo
53+
*.vcproj
54+
*vcproj.*.*.user
55+
*.ncb
56+
*.sdf
57+
*.opensdf
58+
*.vcxproj
59+
*vcxproj.*
60+
61+
# MinGW generated files
62+
*.Debug
63+
*.Release
64+
65+
# Python byte code
66+
*.pyc
67+
68+
# Binaries
69+
# --------
70+
*.dll
71+
*.exe
72+
73+

Rational.pro

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
TEMPLATE = app
2+
CONFIG += console c++11
3+
CONFIG -= app_bundle
4+
CONFIG -= qt
5+
6+
SOURCES += main.cpp \
7+
rational.cpp
8+
QMAKE_CXXFLAGS += -std=c++1z
9+
10+
HEADERS += \
11+
rational.h

main.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#include <iostream>
2+
#include "rational.h"
3+
using namespace std;
4+
5+
int main()
6+
{
7+
rational obj(3,6);
8+
rational obj2(1,3);
9+
rational dd=obj+obj2;
10+
++dd;
11+
--dd;
12+
dd.printRationalNumber();
13+
dd=dd-obj;
14+
dd.printRationalNumber();
15+
dd=dd*obj;
16+
dd.printRationalNumber();
17+
dd=dd/obj;
18+
dd.printRationalNumber();
19+
std::cout<<"ilke "<<dd<<std::endl;
20+
std::cin>>dd;
21+
dd.printRationalNumber();
22+
return 0;
23+
}
24+

rational.cpp

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
#include "rational.h"
2+
#include "iostream"
3+
rational::rational(int n, int d){
4+
if(n<0 && d <0){
5+
mNumerator=-n;
6+
mDenominator=-d;
7+
}
8+
else{
9+
mNumerator=n;
10+
mDenominator=d;
11+
}
12+
13+
mGcd(n,d);
14+
}
15+
16+
void rational::mGcd(int n, int d)
17+
{
18+
if(n<d){
19+
int i=n;
20+
21+
if(d%i==0){
22+
d=d/i;
23+
n=n/i;
24+
}
25+
}else
26+
{
27+
int i=d;
28+
if(n%i==0){
29+
d=d/i;
30+
n=n/i;
31+
}
32+
}
33+
mNumerator=n;
34+
mDenominator=d;
35+
36+
37+
38+
}
39+
40+
int rational::getNumerator() const
41+
{
42+
return mNumerator;
43+
}
44+
45+
int rational::getDenominator() const
46+
{
47+
return mDenominator;
48+
}
49+
50+
void rational::reciprocal()
51+
{
52+
int temp;
53+
temp=mNumerator;
54+
mNumerator=mDenominator;
55+
mDenominator=temp;
56+
}
57+
58+
rational rational::operator+(const rational &other)
59+
{
60+
if(other.mDenominator==mDenominator)
61+
return rational(mNumerator+other.mNumerator,mDenominator);
62+
else{
63+
int tempDenominator=other.mDenominator*mDenominator;
64+
int tempNominator=mNumerator*other.mDenominator+other.mNumerator*mDenominator;
65+
return rational(tempNominator,tempDenominator);
66+
}
67+
}
68+
69+
rational rational::operator-(const rational &other)
70+
{
71+
if(other.mDenominator==mDenominator)
72+
return rational(mNumerator-other.mNumerator,mDenominator);
73+
else{
74+
int tempDenominator=other.mDenominator*mDenominator;
75+
int tempNominator=mNumerator*other.mDenominator-other.mNumerator*mDenominator;
76+
return rational(tempNominator,tempDenominator);
77+
}
78+
}
79+
80+
rational rational::operator *(const rational &other)
81+
{
82+
return rational(mNumerator*other.mNumerator,mDenominator*other.mDenominator);
83+
}
84+
85+
rational rational::operator /(const rational &other)
86+
{
87+
return rational(mNumerator*other.mDenominator,mDenominator*other.mNumerator);
88+
}
89+
90+
rational rational::operator++()
91+
{
92+
mNumerator+=mDenominator;
93+
94+
return rational(mNumerator,mDenominator);
95+
}
96+
97+
rational rational::operator--()
98+
{
99+
mNumerator-=mDenominator;
100+
return rational(mNumerator,mDenominator);
101+
}
102+
103+
void rational::printRationalNumber() const
104+
{
105+
std::cerr<<mNumerator<<"/"<<mDenominator<<std::endl;
106+
}
107+
108+

rational.h

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#ifndef RATIONAL
2+
#define RATIONAL
3+
#include "fstream"
4+
class rational{
5+
public:
6+
rational():mNumerator(0),mDenominator(1){}
7+
rational(int n):mNumerator(n),mDenominator(1){}
8+
rational(int n,int d);
9+
int getNumerator()const;
10+
int getDenominator()const;
11+
void reciprocal();
12+
rational operator+(const rational& other);
13+
rational operator-(const rational& other);
14+
rational operator *(const rational& other);
15+
rational operator /(const rational& other);
16+
rational operator++();
17+
rational operator--();
18+
void printRationalNumber()const;
19+
20+
friend std::ostream& operator<<(std::ostream& os,const rational& a)
21+
{
22+
os<<a.getNumerator()<<"/"<<a.getDenominator();
23+
return os;
24+
}
25+
friend std::istream& operator>>(std::istream& is, rational& a){
26+
is>>a.mNumerator>>a.mDenominator;
27+
return is;
28+
}
29+
30+
private:
31+
32+
void mGcd(int n,int d);
33+
int mNumerator;
34+
int mDenominator;
35+
36+
};
37+
38+
#endif // RATIONAL
39+

0 commit comments

Comments
 (0)