mirror of https://github.com/string1995/eee102.git
parent
91103ce973
commit
154c331012
7 changed files with 469 additions and 184 deletions
@ -0,0 +1,101 @@ |
||||
#include <iostream> |
||||
#include "Fraction.h" |
||||
|
||||
using namespace std; |
||||
|
||||
int main() |
||||
{ |
||||
Fraction a; |
||||
Fraction b(3,-4); |
||||
Fraction c(5); |
||||
Fraction d(-3.14); |
||||
Fraction e = 1.3333; |
||||
Fraction f = -b; |
||||
|
||||
|
||||
cout << "Output in Fraction Form: " << endl; |
||||
cout << "a: " << a << endl; |
||||
cout << "b: " << b << endl; |
||||
cout << "c: " << c << endl; |
||||
cout << "d: " << d << endl; |
||||
cout << "e: " << e << endl; |
||||
cout << "f: " << f << endl << endl; |
||||
|
||||
|
||||
cout << "Output in Decimals Form: " << endl; |
||||
cout << "a: " << a.val() << endl; |
||||
cout << "b: " << b.val() << endl; |
||||
cout << "c: " << c.val() << endl; |
||||
cout << "d: " << d.val() << endl; |
||||
cout << "e: " << e.val() << endl; |
||||
cout << "f: " << f.val() << endl << endl; |
||||
|
||||
|
||||
cout << "Output Numerator: " << endl; |
||||
cout << "a: " << a.top() << endl; |
||||
cout << "b: " << b.top() << endl; |
||||
cout << "c: " << c.top() << endl; |
||||
cout << "d: " << d.top() << endl; |
||||
cout << "e: " << e.top() << endl; |
||||
cout << "f: " << f.top() << endl << endl; |
||||
|
||||
|
||||
cout << "Output Denominator: " << endl; |
||||
cout << "a: " << a.bottom() << endl; |
||||
cout << "b: " << b.bottom() << endl; |
||||
cout << "c: " << c.bottom() << endl; |
||||
cout << "d: " << d.bottom() << endl; |
||||
cout << "e: " << e.bottom() << endl; |
||||
cout << "f: " << f.bottom() << endl << endl; |
||||
|
||||
cout << "-b = " << -b << endl; |
||||
cout << "~b = " << ~b << endl << endl; |
||||
|
||||
|
||||
cout << b << " + " << e << " = " << b+e << endl; |
||||
cout << b << " - " << e << " = " << b-e << endl; |
||||
cout << b << " * " << e << " = " << b*e << endl; |
||||
cout << b << " / " << e << " = " << b/e << endl; |
||||
cout << e << " % " << c << " = " << e%c << endl << endl; |
||||
|
||||
cout << b << " + " << 4.44 << " = " << b+4.44 << endl; |
||||
cout << b << " - " << 3 << " = " << b-3 << endl; |
||||
cout << b << " * " << 2.33333 << " = " << b*2.33333 << endl; |
||||
cout << b << " / " << 5 << " = " << b/5 << endl; |
||||
cout << e << " % " << 1 << " = " << e%1 << endl << endl; |
||||
|
||||
cout << "b++ = " << b++; |
||||
cout << "; b = " << b << endl; |
||||
cout << "++b = " << ++b; |
||||
cout << "; b = " << b << endl; |
||||
|
||||
cout << "b-- = " << b--; |
||||
cout << "; b = " << b << endl; |
||||
cout << "--b = " << --b; |
||||
cout << "; b = " << b << endl << endl; |
||||
|
||||
|
||||
cout << "if b > c ?? " << ((b>c)? "Yes" : "No") << endl; |
||||
cout << "if b < c ?? " << ((b<c)? "Yes" : "No") << endl; |
||||
cout << "if b >= c ?? " << ((b>=c)? "Yes" : "No") << endl; |
||||
cout << "if b <= c ?? " << ((b<=c)? "Yes" : "No") << endl; |
||||
cout << "if b == c ?? " << ((b==c)? "Yes" : "No") << endl; |
||||
cout << "if b == -f ?? " << ((b==-f)? "Yes" : "No") << endl; |
||||
cout << "if b != c ?? " << ((b!=c)? "Yes" : "No") << endl << endl; |
||||
|
||||
|
||||
cout << "b += c; b = " << (b+=c) << endl; |
||||
cout << "b -= c; b = " << (b-=c) << endl; |
||||
cout << "b *= c; b = " << (b*=c) << endl; |
||||
cout << "b /= c; b = " << (b/=c) << endl << endl; |
||||
|
||||
cout << "Devide 0 test: "; |
||||
|
||||
try{ |
||||
Fraction g(1,0); |
||||
}catch(const char* msg){ |
||||
cout << msg << endl; |
||||
} |
||||
|
||||
return 0; |
||||
} |
Binary file not shown.
@ -0,0 +1,30 @@ |
||||
|
||||
|
||||
|
||||
int main() |
||||
{ |
||||
|
||||
/*
|
||||
Fraction f(-4,1); |
||||
Fraction g(-5,1); |
||||
f /= g; |
||||
|
||||
Fraction l = 3.12; |
||||
|
||||
double c; |
||||
|
||||
|
||||
// for(int i =0; i < a.size(); i++) cout << a[i] <<endl;
|
||||
|
||||
try{ |
||||
while(1){ |
||||
cout << l << endl; |
||||
cin >> l;} |
||||
|
||||
//repeated_decimal_to_fraction(2.666);
|
||||
}catch(const char* msg){ |
||||
cerr << msg << endl; |
||||
}*/ |
||||
|
||||
return 0; |
||||
} |
@ -0,0 +1,248 @@ |
||||
|
||||
/**
|
||||
* 函数same_vec()测试
|
||||
* |
||||
* @category eee102-as1 |
||||
* @package same_vec.cpp |
||||
* @copyright Copyright (c) 2019 Yimian LIU (https://iotcat.me)
|
||||
* @license GNU General Public License 2.0 |
||||
* @version 0.0.1 |
||||
*/ |
||||
|
||||
#include <iostream> |
||||
#include <vector> |
||||
#include <algorithm> |
||||
#include <string> |
||||
#include <sstream> |
||||
#include <cmath> |
||||
|
||||
|
||||
using namespace std; |
||||
|
||||
|
||||
|
||||
|
||||
/****** 用户输入相关函数 ********/ |
||||
|
||||
/**
|
||||
* 判断char是否为数字 |
||||
* |
||||
* @access public
|
||||
* @param char c 待判断的值 |
||||
* @return bool true : false |
||||
*/ |
||||
inline bool is_num(const char c) |
||||
{ |
||||
return (c > 47 && c < 58)? true : false; |
||||
} |
||||
|
||||
|
||||
/**
|
||||
* 转换char型数字到int型 |
||||
* |
||||
* @access public
|
||||
* @param char c 要转换的值 |
||||
* @return int 转换完成的数字 |
||||
*/ |
||||
inline int char_to_num(const char c) |
||||
{ |
||||
return (int)c - (int)'0'; |
||||
} |
||||
|
||||
|
||||
/**
|
||||
* 从string中提取一个int数字 |
||||
* |
||||
* @access public
|
||||
* @param string s 要搜索的string |
||||
* @param int& pos 起始位置
|
||||
* @return int 提取出的数字 |
||||
*/ |
||||
int get_int_from_string(const string& s, int& pos) |
||||
{ |
||||
if(!is_num(s.at(pos))) return 0; |
||||
|
||||
int t = char_to_num(s.at(pos)); |
||||
|
||||
while(++pos < s.length() && is_num(s.at(pos))){ |
||||
|
||||
t = t * 10 + char_to_num(s.at(pos)); |
||||
} |
||||
|
||||
return t; |
||||
} |
||||
|
||||
|
||||
/**
|
||||
* 用户输入值到vector |
||||
* |
||||
* @access public
|
||||
* @param vector<int>& v 待存储的vector |
||||
* @return void |
||||
*/ |
||||
void getVec(vector<int>& v) |
||||
{ |
||||
string s; |
||||
|
||||
getline(cin, s); |
||||
int i = 0; |
||||
while(i < s.length()){ |
||||
|
||||
if(is_num(s.at(i))) v.push_back(get_int_from_string(s, i)); |
||||
|
||||
while( ++i < s.length() && !is_num(s.at(i))); |
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/****** 算法一 ********/ |
||||
|
||||
/**
|
||||
* 判断vector中是否包含特定值 |
||||
* |
||||
* @access public
|
||||
* @param int val 需要寻找的值 |
||||
* @param vector<int> v 需要遍历的vector
|
||||
* @return bool true : false |
||||
*/ |
||||
bool is_in_vector(const int val, const vector<int>& v) |
||||
{ |
||||
for(int i = 0; i < v.size(); i++){ |
||||
|
||||
if(val == v[i]) return true; |
||||
} |
||||
|
||||
return false; |
||||
} |
||||
|
||||
|
||||
/**
|
||||
* 是否a中所有的元素b中都存在 |
||||
* |
||||
* @access public |
||||
* @param vector<int> a 第一个vector
|
||||
* @param vector<int> b 第二个vector |
||||
* @return bool true : flase |
||||
*/ |
||||
bool is_vec_a_in_b(const vector<int>& a, const vector<int>& b) |
||||
{ |
||||
int sameElements = 0; |
||||
|
||||
for(int i = 0; i < a.size(); i++){ |
||||
|
||||
sameElements += is_in_vector(a[i], b); |
||||
} |
||||
|
||||
return (sameElements == a.size()) ? true : false; |
||||
} |
||||
|
||||
|
||||
/**
|
||||
* 判断两vector是否相同 |
||||
* |
||||
* @access public |
||||
* @param vector<int> a 第一个vector
|
||||
* @param vector<int> b 第二个vector |
||||
* @return bool true : flase |
||||
*/ |
||||
inline bool same_vec1(const vector<int>& a, const vector<int>& b){ |
||||
|
||||
if(a.size() == 0 && b.size() == 0) return true; |
||||
if(a.size() == 0 || b.size() == 0) return false; |
||||
|
||||
return is_vec_a_in_b(a,b) && is_vec_a_in_b(b,a); |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/****** 算法二 ********/ |
||||
|
||||
/**
|
||||
* 寻找vector中下一个不同的元素 |
||||
* |
||||
* @access public |
||||
* @param vector<int> v 待寻找的vector
|
||||
* @param int pos 寻找起始位置
|
||||
* @return void |
||||
*/ |
||||
void next_diff_element(const vector<int>& v, int& pos) |
||||
{ |
||||
while(pos < v.size() - 1) { |
||||
|
||||
if(v[pos] != v[++pos]) return; |
||||
} |
||||
} |
||||
|
||||
|
||||
/**
|
||||
* 判断两vector是否相同 |
||||
* |
||||
* @access public |
||||
* @param vector<int> a 第一个vector
|
||||
* @param vector<int> b 第二个vector |
||||
* @return bool true : flase |
||||
*/ |
||||
bool same_vec2(vector<int> a, vector<int> b){ |
||||
|
||||
if(a.size() == 0 && b.size() == 0) return true; |
||||
if(a.size() == 0 || b.size() == 0) return false; |
||||
|
||||
sort(a.begin(), a.end()); |
||||
sort(b.begin(), b.end()); |
||||
|
||||
for(int posA, posB = 0; ; ){ |
||||
|
||||
if(a[posA] != b[posB]) return false; |
||||
|
||||
if(posA >= a.size() - 1 && posB >= b.size() - 1) break; |
||||
|
||||
next_diff_element(a, posA); |
||||
next_diff_element(b, posB); |
||||
} |
||||
|
||||
return true; |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
/* 主函数 */ |
||||
int main() |
||||
{ |
||||
while(1){ |
||||
|
||||
vector<int> a, b; |
||||
|
||||
cout << "Please input Vector A: "; |
||||
getVec(a); |
||||
cout << "Please input Vector B: "; |
||||
getVec(b); |
||||
|
||||
cout << "Vector A: "; |
||||
for(int i = 0; i < a.size(); i++){ |
||||
|
||||
cout << a[i] << ", "; |
||||
} |
||||
|
||||
cout << endl << "Vector B: "; |
||||
for(int i = 0; i < b.size(); i++){ |
||||
|
||||
cout << b[i] << ", "; |
||||
} |
||||
|
||||
cout << endl << "Result from algorithm 1: " << (same_vec2(a, b)? "Same!" : "Not Same!") << endl; |
||||
cout << "Result from algorithm 2: " << (same_vec2(a, b)? "Same!" : "Not Same!") << endl << endl; |
||||
|
||||
a.clear(); |
||||
b.clear(); |
||||
|
||||
cout << "Please press Ctrl+C to quit!!!" << endl << endl; |
||||
} |
||||
|
||||
return 0; |
||||
} |
Loading…
Reference in new issue