﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-夫为剑者-文章分类-自我监督</title><link>http://www.cppblog.com/vivip/category/2359.html</link><description>示之以虚 开之以利 后之以发 先之以至</description><language>zh-cn</language><lastBuildDate>Fri, 23 May 2008 00:18:46 GMT</lastBuildDate><pubDate>Fri, 23 May 2008 00:18:46 GMT</pubDate><ttl>60</ttl><item><title>2006-08-15</title><link>http://www.cppblog.com/vivip/articles/11242.html</link><dc:creator>vivip</dc:creator><author>vivip</author><pubDate>Tue, 15 Aug 2006 02:44:00 GMT</pubDate><guid>http://www.cppblog.com/vivip/articles/11242.html</guid><wfw:comment>http://www.cppblog.com/vivip/comments/11242.html</wfw:comment><comments>http://www.cppblog.com/vivip/articles/11242.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vivip/comments/commentRss/11242.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vivip/services/trackbacks/11242.html</trackback:ping><description><![CDATA[<font size=2>
#ifndef MATH_OPERATOR_H <br>
#define MATH_OPERATOR_H<br>
<br>
#include "StackTmp.h"<br>
<br>
class MathOperator <br>
{<br>
private:<br>
	char op;<br>
	int inputprecedence;<br>
	int stackprecedence;<br>
public:<br>
	MathOperator();<br>
	MathOperator(char);<br>
	int operator &gt;=(MathOperator a) const;<br>
	void Evaluate(Stack&lt;float&gt;& operandStack);<br>
	char GetOp();<br>
};<br>
<br>
#endif<br>
</font><img src ="http://www.cppblog.com/vivip/aggbug/11242.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vivip/" target="_blank">vivip</a> 2006-08-15 10:44 <a href="http://www.cppblog.com/vivip/articles/11242.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2006-08-14</title><link>http://www.cppblog.com/vivip/articles/11217.html</link><dc:creator>vivip</dc:creator><author>vivip</author><pubDate>Mon, 14 Aug 2006 07:49:00 GMT</pubDate><guid>http://www.cppblog.com/vivip/articles/11217.html</guid><wfw:comment>http://www.cppblog.com/vivip/comments/11217.html</wfw:comment><comments>http://www.cppblog.com/vivip/articles/11217.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vivip/comments/commentRss/11217.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vivip/services/trackbacks/11217.html</trackback:ping><description><![CDATA[<font size=2>
简单的数组类<br>
#ifndef ARRAY_H_<br>
#define ARRAY_H_<br>
<br>
#include &lt;iostream.h&gt;;<br>
#include &lt;stdlib.h&gt;;<br>
<br>
enum ErrorType { invalidArraySize,memoryAllocationError,indexOutOfRange};<br>
char * errorMsg[] = { "Invalid array size","Memory allocation error","invalid index"};<br>
<br>
template &lt;class T&gt;;<br>
class Array<br>
{<br>
	private:<br>
		T* alist;<br>
		int size;<br>
<br>
		void Error(ErrorType errorCommitted,int badIndex=0) const;<br>
	public:<br>
		Array(int sz=50);<br>
		Array(const Array&lt;T&gt;;& X);<br>
		~Array();<br>
<br>
		Array&lt;T&gt;;& operator =(const Array&lt;T&gt;;& rhs);<br>
		T& operator [](int i);<br>
		operator T* () const;<br>
		int ListSize() const;<br>
		void Resize(int sz);<br>
};<br>
<br>
template &lt;class T&gt;;<br>
Array&lt;T&gt;;::Array(int sz/* =50 */)<br>
{<br>
	if (sz &lt;= 0)<br>
		Error(invalidArraySize);<br>
	size = sz;<br>
	alist = new T[size];<br>
	if (alist == NULL)<br>
		Error(memoryAllocationError);<br>
}<br>
<br>
template &lt;class T&gt;;<br>
Array&lt;T&gt;;::Array(const Array&lt;T&gt;;& X)<br>
{<br>
	int n = X.size;<br>
	size = n;<br>
	alist = new T[n];<br>
	if (alist == NULL)<br>
		Error(memoryAllocationError);<br>
	T* srcptr = X.alist;<br>
	T* destptr = alist;<br>
	while(n--)<br>
		*destptr++ = *srcptr++;<br>
}<br>
<br>
template &lt;class T&gt;;<br>
Array&lt;T&gt;;::~Array()<br>
{<br>
	delete [] alist;<br>
}<br>
<br>
template &lt;class T&gt;;<br>
T& Array&lt;T&gt;;::operator [](int n)<br>
{<br>
	if (n&lt;0 || n&gt;;size - 1)<br>
		Error(indexOutOfRange,n);<br>
	return alist[n];<br>
}<br>
<br>
template &lt;class T&gt;;<br>
Array&lt;T&gt;;::operator T* () const<br>
{<br>
	return alist;<br>
}<br>
<br>
template &lt;class T&gt;;<br>
int Array&lt;T&gt;;::ListSize() const<br>
{<br>
	return size;<br>
}<br>
<br>
template &lt;class T&gt;;<br>
void Array&lt;T&gt;;::Resize(int sz)<br>
{<br>
	if (sz &lt;= 0)<br>
		Error(invalidArraySize);<br>
	if (sz == size)<br>
		return;<br>
	T* newlist = new T[sz];<br>
	if (newlist == NULL)<br>
		Error(memoryAllocationError);<br>
	int n = (sz &lt;= size ? sz : size);<br>
	T* srcptr = alist;<br>
	T* destptr = newlist;<br>
	while (n--)<br>
		*destptr++ = *srcptr++;<br>
	delete [] alist;<br>
	alist = newlist;<br>
	size = sz;<br>
}<br>
<br>
template &lt;class T&gt;;<br>
void Array&lt;T&gt;;::Error(ErrorType errorCommitted,int badIndex/* =0 */) const<br>
{<br>
	if (errorCommitted == invalidArraySize)<br>
		cerr&lt;&lt;errorMsg[0]&lt;&lt;endl;<br>
	else if (errorCommitted == memoryAllocationError)<br>
		cerr&lt;&lt;errorMsg[1]&lt;&lt;endl;<br>
	else if (errorCommitted == indexOutOfRange)<br>
		cerr&lt;&lt;errorMsg[2]&lt;&lt;"  "&lt;&lt;badIndex&lt;&lt;endl;<br>
	exit(1);<br>
}<br>
<br>
template &lt;class T&gt;;<br>
Array&lt;T&gt;;& Array&lt;T&gt;;::operator =(const Array&lt;T&gt;;& X)<br>
{<br>
	T* newlist = new T[X.size];<br>
	if (newlist == NULL)<br>
		Error(memoryAllocationError);T* srcptr = alist;<br>
	T* destptr = newlist;<br>
	while (n--)<br>
		*destptr++ = *srcptr++;<br>
	delete [] alist;<br>
	alist = newlist;<br>
	size = sz;<br>
	return this;<br>
}<br>
<br>
<br>
#endif
<br>
<br>
下面是测试代码，求质数<br>
#include "Array.h"<br>
#include &lt;iomanip.h&gt;;<br>
<br>
int main()<br>
{<br>
	Array &lt;int&gt;; A(10);<br>
	int upperlimit,primecount = 0,i,j;<br>
	cout&lt;&lt;"enter value &gt;;= 2 as upper limit for prime numbers:";<br>
	cin&gt;;&gt;;upperlimit;<br>
	A[primecount++] = 2;<br>
	for (i=3;i&lt;upperlimit;i++)<br>
	{<br>
		if (primecount == A.ListSize())<br>
			A.Resize(primecount+10);<br>
		if (i % 2 == 0)<br>
			continue;<br>
		j = 3;<br>
		while (j &lt;= i/2 && i % j != 0)<br>
			j+=2;<br>
		if (j&gt;;i/2)<br>
			A[primecount++] = i;<br>
	}<br>
	for (i=0;i&lt;primecount;i++)<br>
	{<br>
		cout&lt;&lt;setw(5)&lt;&lt;A[i];<br>
		if ((i+1)%10 == 0)<br>
			cout&lt;&lt;endl;<br>
	}<br>
	cout &lt;&lt;endl;<br>
	return 0;<br>
}<br>
</font><img src ="http://www.cppblog.com/vivip/aggbug/11217.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vivip/" target="_blank">vivip</a> 2006-08-14 15:49 <a href="http://www.cppblog.com/vivip/articles/11217.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2006.08.09</title><link>http://www.cppblog.com/vivip/articles/11095.html</link><dc:creator>vivip</dc:creator><author>vivip</author><pubDate>Thu, 10 Aug 2006 09:20:00 GMT</pubDate><guid>http://www.cppblog.com/vivip/articles/11095.html</guid><wfw:comment>http://www.cppblog.com/vivip/comments/11095.html</wfw:comment><comments>http://www.cppblog.com/vivip/articles/11095.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vivip/comments/commentRss/11095.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vivip/services/trackbacks/11095.html</trackback:ping><description><![CDATA[<font size=2>
&nbsp;&nbsp;&nbsp;&nbsp;没有学习，惰性上来了。
</font><img src ="http://www.cppblog.com/vivip/aggbug/11095.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vivip/" target="_blank">vivip</a> 2006-08-10 17:20 <a href="http://www.cppblog.com/vivip/articles/11095.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2006.08.08</title><link>http://www.cppblog.com/vivip/articles/11031.html</link><dc:creator>vivip</dc:creator><author>vivip</author><pubDate>Wed, 09 Aug 2006 01:44:00 GMT</pubDate><guid>http://www.cppblog.com/vivip/articles/11031.html</guid><wfw:comment>http://www.cppblog.com/vivip/comments/11031.html</wfw:comment><comments>http://www.cppblog.com/vivip/articles/11031.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vivip/comments/commentRss/11031.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vivip/services/trackbacks/11031.html</trackback:ping><description><![CDATA[<font size=2>
#ifndef STACK_TMP_H<br>
#define STACK_TMP_H<br>
<br>
#include &lt;iostream.h&gt;<br>
#include &lt;stdlib.h&gt;<br>
<br>
const int MaxStackSize = 50;<br>
<br>
template &lt;class T&gt;<br>
class Stack <br>
{<br>
	private:<br>
		T StackList[MaxStackSize];<br>
		int top;<br>
	public:<br>
		Stack();<br>
		void Push(const T& item);<br>
		T Pop();<br>
		void ClearStack();<br>
		T Peek() const;<br>
		int StackEmpty() const;<br>
		int StackFull() const;<br>
};<br>
<br>
template &lt;class T&gt;<br>
Stack&lt;T&gt;::Stack()<br>
{<br>
	top = -1;<br>
}<br>
<br>
template &lt;class T&gt;<br>
void Stack&lt;T&gt;::Push(const T& item)<br>
{<br>
	if (top == MaxStackSize-1)<br>
	{<br>
		exit(1);<br>
	}<br>
	StackList[++top] = item;<br>
}<br>
<br>
template &lt;class T&gt;<br>
T Stack&lt;T&gt;::Pop()<br>
{<br>
	if (top == -1)<br>
		exit(1);<br>
	T tmp;<br>
	tmp = StackList[top--];<br>
	return tmp;<br>
}<br>
<br>
template &lt;class T&gt;<br>
void Stack&lt;T&gt;::ClearStack()<br>
{<br>
	top = -1;<br>
}<br>
<br>
template &lt;class T&gt;<br>
T Stack&lt;T&gt;::Peek() const<br>
{<br>
	if (top == -1)<br>
		exit(1);<br>
	return StackList[top];<br>
}<br>
<br>
template &lt;class T&gt;<br>
int Stack&lt;T&gt;::StackEmpty() const<br>
{<br>
	return (top == -1);<br>
}<br>
<br>
template &lt;class T&gt;<br>
int Stack&lt;T&gt;::StackFull() const<br>
{<br>
	return (top == MaxStackSize-1);<br>
}<br>
<br>
#endif<br>
</font><img src ="http://www.cppblog.com/vivip/aggbug/11031.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vivip/" target="_blank">vivip</a> 2006-08-09 09:44 <a href="http://www.cppblog.com/vivip/articles/11031.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2006.08.07</title><link>http://www.cppblog.com/vivip/articles/10962.html</link><dc:creator>vivip</dc:creator><author>vivip</author><pubDate>Tue, 08 Aug 2006 02:06:00 GMT</pubDate><guid>http://www.cppblog.com/vivip/articles/10962.html</guid><wfw:comment>http://www.cppblog.com/vivip/comments/10962.html</wfw:comment><comments>http://www.cppblog.com/vivip/articles/10962.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vivip/comments/commentRss/10962.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vivip/services/trackbacks/10962.html</trackback:ping><description><![CDATA[<font size=2>
ㅏ ,ㅑ ,ㅓ ,ㅕ,ㅗ,ㅛ ,ㅡ,ㅣ<br>
reflector,terrific,vendor,ferryboat.<br>

#ifndef RATIONAL_H_ <br>
#define RATIONAL_H_ <br><br>

#include &lt;iostream.h&gt;<br>
#include &lt;stdlib.h&gt;<br><br>

class Rational      //有理数类<br> 
{<br> 
private:<br> 
	long num,den;//分子分母<br> 
	Rational(long number,long denom);<br> 
	void Standordize();//将分母转换为正数<br> 
	long gcd(long m,long n) const;//最大公约数<br> 
public:<br> 
	Rational(int number=0,long denom=1);<br> 
	Rational(double x);//double类型转换为有理数<br> <br> 

	friend istream& operator &gt;&gt;(istream& istr,Rational &x);<br> 
	friend ostream& operator &lt;&lt;(ostream& ostr,const Rational &x);<br> <br> 

	Rational operator +(Rational v) const;<br> 
	Rational operator -(Rational v) const;<br> 
	Rational operator *(Rational v) const;<br> 
	Rational operator /(Rational v) const;<br> 
<br> 
	Rational operator -() const;<br> 
<br> 
	int operator &lt;(Rational v) const;<br> 
	int operator &gt;(Rational v) const;<br> 
	int operator &lt;=(Rational v) const;<br> 
	int operator &gt;=(Rational v) const;<br> 
	int operator ==(Rational v) const;<br> 
	int operator !=(Rational v) const;<br> 
<br> 
	operator double() const;//有理数转换为double<br> 
<br> 
	long GetNumberator() const;<br> 
	long GetDenominator() const;<br> 
	void Reduce();//最简形式<br> 
};<br> 
<br> 
#endif<br> 
<br><br><br>
#include "Rational.h"<br>
<br>
long Rational::gcd(long m,long n) const<br>
{<br>
	long r;<br>
	if (m==0 || n==0)<br>
		exit(1);<br>
	while (r = m % n)<br>
	{<br>
		m = n;<br>
		n = r;<br>
	}<br>
	return n;<br>
}<br>
<br>
void Rational::Standordize()<br>
{<br>
	if (den &lt; 0)<br>
	{<br>
		den = -den;<br>
		num = -num;<br>
	}<br>
}<br>
<br>
Rational::Rational(int number/* =0 */,long denom/* =1 */)<br>
{<br>
	if (denom == 0)<br>
		exit(1);<br>
	num = number;<br>
	den = denom;<br>
	Standordize();<br>
}<br>
<br>
Rational::Rational(long number,long denom):num(number),den(denom)<br>
{<br>
	if (den == 0)<br>
		exit(1);<br>
}<br>
<br>
Rational::Rational(double x)<br>
{<br>
	double var1,var2;<br>
	var1 = 100000000L * x;<br>
	var2 = 10000000L * x;<br>
	num = long(var1-var2);<br>
	den = 90000000L;<br>
	Reduce();<br>
}<br>
<br>
void Rational::Reduce()<br>
{<br>
	long r = gcd(num,den);<br>
	num /= r;<br>
	den /= r;<br>
}<br>
<br>
long Rational::GetDenominator() const<br>
{<br>
	return den;<br>
}<br>
<br>
long Rational::GetNumberator() const<br>
{<br>
	return num;<br>
}<br>
<br>
Rational Rational::operator +(Rational v) const<br>
{<br>
	return Rational(num*v.GetDenominator()+v.GetNumberator()*den,den*v.GetDenominator());<br>
}<br>
<br>
Rational Rational::operator -(Rational v) const<br>
{<br>
	return Rational(num*v.GetDenominator()-v.GetNumberator()*den,den*v.GetDenominator());<br>
}<br>

Rational Rational::operator *(Rational v) const<br>
{<br>
	return Rational(num*v.GetNumberator(),den*v.GetDenominator());<br>
}<br>

Rational Rational::operator /(Rational v) const<br>
{<br>
	return Rational(num*v.GetDenominator(),den*v.GetNumberator());<br>
}<br>
<br>
Rational Rational::operator -() const<br>
{<br>
	return Rational(-num,den);<br>
}<br>
<br>
int Rational::operator &lt;(Rational v) const<br>
{<br>
	return den*v.GetDenominator()&gt;0 ? num*v.GetDenominator()&lt;v.GetNumberator()*den : num*v.GetDenominator()&gt;v.GetNumberator()*den;<br>
}<br>
<br>
int Rational::operator &gt;(Rational v) const<br>
{<br>
	return den*v.GetDenominator()&gt;0 ? num*v.GetDenominator()&gt;v.GetNumberator()*den : num*v.GetDenominator()&lt;v.GetNumberator()*den;<br>
}<br>
<br>
int Rational::operator &lt;=(Rational v) const<br>
{<br>
	return den*v.GetDenominator()&gt;0 ? num*v.GetDenominator()&lt;=v.GetNumberator()*den : num*v.GetDenominator()&gt;=v.GetNumberator()*den;<br>
}<br>
<br>
int Rational::operator &gt;=(Rational v) const<br>
{<br>
	return den*v.GetDenominator()&gt;0 ? num*v.GetDenominator()&gt;=v.GetNumberator()*den : num*v.GetDenominator()&lt;=v.GetNumberator()*den;<br>
}<br>
<br>
int Rational::operator ==(Rational v) const<br>
{<br>
	return num*v.GetDenominator()==v.GetNumberator()*den;<br>
}<br>
<br>
int Rational::operator !=(Rational v) const<br>
{<br>
	return num*v.GetDenominator()!=v.GetNumberator()*den;<br>
}<br>
<br>
Rational::operator double() const<br>
{<br>
	return double(num)/den;<br>
}<br>
<br>
istream& operator &gt;&gt;(istream& istr,Rational &x)<br>
{<br>
	char c;<br>
	istr&gt;&gt;x.num&gt;&gt;c&gt;&gt;x.den;<br>
	if (x.den == 0)<br>
	{<br>
		exit(1);<br>
	}<br>
	return istr;<br>
}<br>
<br>
ostream& operator &lt;&lt;(ostream& ostr,const Rational &x)<br>
{<br>
	ostr&lt;&lt;"the num is:"&lt;&lt;x.num&lt;&lt;endl;<br>
	ostr&lt;&lt;"the den is:"&lt;&lt;x.den&lt;&lt;endl;<br>
	return ostr;<br>
}<br>

</font>
<img src ="http://www.cppblog.com/vivip/aggbug/10962.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vivip/" target="_blank">vivip</a> 2006-08-08 10:06 <a href="http://www.cppblog.com/vivip/articles/10962.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>