2008年8月29日星期五

vc++ - 一元運算作法

#include<iostream>
using namespace std;


class my_Score

public:
int my_var;  
my_Score()

my_var=9;

my_Score(int a)

my_var=a;

my_Score operator++(int);  // 必須定義為類別的成員函式
my_Score operator--(int);  // 必須定義為類別的成員函式
};
// 宣告++運算子多載

my_Score my_Score::operator++(int)

return my_Score(my_var++);


// 宣告--運算子多載
my_Score my_Score::operator--(int)

return my_Score(my_var--);


void main()

int i,j;
for(i=1;i<=10;i++){
my_Score st1(i)++;  
    cout << "值 :" << st1.my_var  << endl;
st1++;   


for(i=10;i>=1;i--){
my_Score st2(i);  
    cout << "值 :" << st2.my_var  << endl;
st2--;   



vc++ 多元一元載子 四則運算

#include<iostream>
using namespace std;


class my_Score

public:
int my_var;   
my_Score(int a) 

my_var=a;

};
int operator+(int x,my_Score s1)

return (x+s1.my_var);

int operator-(int x,my_Score s1)

return (x-s1.my_var);

int operator*(int x,my_Score s1)

return (x*s1.my_var);



int operator/(int x,my_Score s1)

return (x/s1.my_var);


void main()

my_Score my_st(20);  
cout << "100 + 20 = " << (100+my_st) << endl; 
cout << "100 - 20 = " << (100-my_st) << endl; 
cout << "100 * 20 = " << (100*my_st) << endl; 
cout << "100 / 20 = " << (100/my_st) << endl; 

VC++ - 多載化建構子

#include<iostream>
#include "ctype.h"
using namespace std;

class Data

public:

Data(char b)

cout << "參數為:" << (int)b << endl;


};

void main()

    
char p;
cout<<"請輸入一個字元"<<endl;
cin>>p;
    
if (isalpha(p)){
Data d1(p);

else{
cout<<"輸入的不是字元"<<endl;

vc++ - 多載函式類別成員1

#include<iostream>
using namespace std;

class Score

int china;
int english;
int math;
public:
int sum,sum1;

void total_score()

sum=0;

void total_score(int a,int b,int c)

china=a;
if (china<60)
china=60;
math=b;
if (math<60)
math=60;
english=c;
if (english<60)
english=60;
sum1=china+english+math;
sum=sum1+sum;

};

void main()
{   
int x1,x2,x3;
char d;
Score s1;
s1.total_score();
for(;;){

cout<<"請輸入國文成績 : ";
cin>>x1;
cout<<"請輸入英文成績 : ";
cin>>x2;
cout<<"請輸入數學成績 : ";
cin>>x3;
   s1.total_score(x1,x2,x3);
cout << "合計是" << s1.sum << endl;
cout<<"請問是否要繼續:是 -> y , 否-> n ";
cin>>d;
if (d=='N'||d=='n')
break;}


vc++ - 多載函式類別成員

#include<iostream>
using namespace std;

class Score

int china;
int english;
int math;
public:
int sum,sum1;

void total_score()


sum=0;

void total_score(int a,int b,int c)

china=a;
math=b;
english=c;
sum1=china+english+math;
sum=sum1+sum;

};

void main()
{   
int x1,x2,x3;
char d;
Score s1;
s1.total_score();
for(;;){

cout<<"請輸入國文成績 : ";
cin>>x1;
cout<<"請輸入英文成績 : ";
cin>>x2;
cout<<"請輸入數學成績 : ";
cin>>x3;
   s1.total_score(x1,x2,x3);
cout << "合計是" << s1.sum << endl;
cout<<"請問是否要繼續:是 -> y , 否-> n ";
cin>>d;
if (d=='N'||d=='n')
break;}


2008年8月27日星期三

vc++ - 多載函式2

#include<iostream>
#include "math.h"
using namespace std;


int multisum(int a,int b)  

int sum=0;
sum=a*b;
return sum;



int multisum(int a,int b,int c) 

int sum=0;
sum=a*b*c;
return sum;

float multisum(float a) 

float sum=0;
sum=a*a*3.1415962;
return sum;


void main()

int w,l,h;
float r;

    cout << "請輸入長:" << endl;
cin>>l;
 cout << "請輸入寬:" << endl;
cin>>w;
 cout << "請輸入高:" << endl;
cin>>h;
r = (float)sqrt(w*w+l*l)/2;

    cout << "圓面積:" << multisum(r) << endl;
cout << "面積:" << multisum(w,l) << endl;
cout << "體積:" << multisum(w,l,h) << endl;
};

vc++ - 多載函式1

#include<iostream>
using namespace std;


int multisum(int a,int b)  

int sum=0;
sum=a*b;
return sum;



int multisum(int a,int b,int c) 

int sum=0;
sum=a*b*c;
return sum;

float multisum(int a) 

float sum=0;
sum=a*a*3.1415962;
return sum;


void main()

    cout << "圓面積:" << multisum(12) << endl;
cout << "面積:" << multisum(12,12) << endl;
cout << "體積:" << multisum(3,4,5) << endl;
};

vc++ - 多重繼承3

#include<iostream>
using namespace std;


class my_no

private:
int no;
public:
void set_no(int no)

this->no=no;

int get_no()

return no;

};

class my_score

private:
int china;
int english;
int math;
public:

void set_china(int china)

this->china=china;

int get_china()

return china;


void set_english(int english)

this->english=english;

int get_english()

return english;


void set_math(int math)

this->math=math;

int get_math()

return math;

};
class my_student : public my_no,public my_score

private:
int sum;
public:
my_student()

int sum=0;

void show()

cout << "學號:" << get_no() << endl;
cout << "國文:" << get_china() << endl;
cout << "英文:" << get_english() << endl;
cout << "數學:" << get_math() << endl;

void add1()


sum=get_china()+get_english()+get_math();
cout << "總成績為:" << sum << endl;

};
void main()


my_student st1;
int s1,s2,s3;

st1.set_no(3);
cout << "請輸入國文成績:";
cin >> s1;
cout << "請輸入英文成績:";
cin >> s2;
cout << "請輸入數學成績:";
cin >> s3;

st1.set_china(s1);
st1.set_english(s2);
st1.set_math(s3);
cout << "*************************************" << endl;


st1.show();
st1.add1();

vc++ - 多重繼承2

#include<iostream>
using namespace std;
class my_score

private:
int china;
int english;
int math;
public:
void set_china(int china)
{ this->china=china; }
int get_china()
{ return china; }
void set_english(int english)
{ this->english=english; }
int get_english()
{ return english; }
void set_math(int math)
{ this->math=math; }
int get_math()
{ return math; }
};

class my_student : public my_score

private:
int sum;
float avg;
public:
my_student() 

{ int sum=0;
float avg=0.0;

void show_score()

cout << "國文:" << get_china() << endl;
cout << "英文:" << get_english() << endl;
cout << "數學:" << get_math() << endl;

void add1()

sum=get_china()+get_english()+get_math();

cout << "總成績為:" << sum << endl;

void avg1()


avg=(float)(get_china()+get_english()+get_math())/3;

cout << "總平均為:" << avg << endl;

};
void main()


my_student st1;
int s1,s2,s3;


cout << "請輸入國文成績:";
cin >> s1;
cout << "請輸入英文成績:";
cin >> s2;
cout << "請輸入數學成績:";
cin >> s3;

st1.set_china(s1);
st1.set_english(s2);
st1.set_math(s3);
cout << "************************************" << endl;
st1.show_score();
st1.add1();
st1.avg1();

vc++ - 多重繼承

#include<iostream>
using namespace std;
class my_score

private:
int china;
int english;
int math;
public:
void set_china(int china)
{ this->china=china; }
int get_china()
{ return china; }
void set_english(int english)
{ this->english=english; }
int get_english()
{ return english; }
void set_math(int math)
{ this->math=math; }
int get_math()
{ return math; }
};
class my_student : public my_score

private:
int sum;
float avg;
public:
my_student() { int sum=0;
float avg=0.0;

void show_score()

cout << "國文:" << get_china() << endl;
cout << "英文:" << get_english() << endl;
cout << "數學:" << get_math() << endl;

void add1()

sum=get_china()+get_english()+get_math();
avg=(float)sum/3;
cout << "總成績為:" << sum << endl;
cout << "總平均為:" << avg << endl;
}};
void main()


my_student st1;
int s1,s2,s3;


cout << "請輸入國文成績:";
cin >> s1;
cout << "請輸入英文成績:";
cin >> s2;
cout << "請輸入數學成績:";
cin >> s3;
st1.set_china(s1);
st1.set_english(s2);
st1.set_math(s3);
cout << "***********************" << endl;
st1.show_score();
st1.add1();

vc++ - protected作法

#include<iostream>
using namespace std;
class my_data

private:
int no;
protected:
int china;
int narth;
public:
int math;
int english;
my_data()  

no=0;
china=0;
narth=0;
math=0;
english=0;

void set_no(int n1)
{ no=n1; }
void show_no()
{ cout << "學號 : " << no << endl; }
};
class my_data1:protected my_data

public:
void set_data1(int n3,int n4)

china=n3;   
narth=n4;

void set_data2(int n5 , int n6)

english=n5;  
math=n6;

void setno(int n7)


set_no(n7); 

void show_data()


show_no();
cout << "國文 :" << china << endl;
cout << "自然 :" << narth << endl;
cout << "英文 :" << english << endl;
cout << "數學 :" << math << endl;

};
void main()

 int i,a,no[sizeof(int)],ch[sizeof(int)],ma[sizeof(int)],en[sizeof(int)],na[sizeof(int)];
  cout << "請輸入同學位數 :" ;
cin>>a ;
 for(i=0;i<a;i++){
        cout << "第 "<<i+1<<"位同學" ;
    cout << "學號 :" ;
cin>>no[i] ;
     cout << "國文 :" ;
cin>>ch[i] ;
cout << "自然 :" ;
cin>>na[i];
cout << "英文 :" ;
cin>>en[i];

cout << "數學 :" ;
cin>>ma[i];
 }
my_data1 obj1;

for(i=0;i<3;i++){
obj1.setno(no[i]); 
obj1.set_data1(ch[i],na[i]);
obj1.set_data2(en[i],ma[i]);
obj1.show_data();

VC++ - 繼承

#include<iostream>
using namespace std;
class my_score

public:
int china;
int math;
int english;
    int total;

my_score();  
void get_score();
void show_score();
void gettotal();

};
my_score::my_score()

china=0;  
math=0; 
english=0;
total =china+math+english;

void my_score::get_score()

cout << "輸入國文成績:";
cin >> china;
    cout << endl<<"輸入英文成績:";
cin >> english;
cout <<endl<< "輸入數學成績:";
cin >> math;

void my_score::show_score()

cout << "國文:" << china << endl;
    cout << "英文:" << english << endl;
cout << "數學:" << math << endl;

void my_score::gettotal()

total =china+math+english;



class st1:public my_score

private:
int no;
char name[20];
public:
void show_data();
void set_data();
void show_total();

};
void st1::show_data()

cout << "********************************" << endl;
show_score();
cout << "座號:" << no << endl;
cout << "姓名:" << name << endl;

void st1::set_data()

cout << "輸入座號:";
cin >> no;
cout << "輸入姓名:";
cin >> name;




void st1::show_total()

   
cout << "合計 :" << total  << endl;


void main()

st1 s1;

s1.get_score();
s1.set_data();

s1.gettotal();
s1.show_total();
s1.show_data();

2008年8月26日星期二

VC++ - 例外(感謝PETER)

#include<iostream>
using namespace std;

void main()
{ 

 cout<<"例外"<<endl;

 try
 {

 int n1;
 cout<<"請輸入除數:";
 cin>>n1;  //經過我無聊而且有耐心的精神發現到,n1宣告int後,經cin指另寫進去n1的是ASSIC CODE十進位碼。^^//

if (!(n1>0 && n1<=9))  //我只修改這行判別式,意思就是說不是輸入0—9的一律都是"除零例外"不管是符號,英文字或是組合鍵,通通擋住,滴水不漏。 ^^//
 {
 throw 1;  
 } 
 cout<<"不是例外"<<endl; 
 
 }

 catch(int e)  
 {
 cout<<"除零例外"<<endl;
 }

2008年8月25日星期一

vc++ - 例外 字母

#include<iostream>
using namespace std;

void main()

{ 
cout<<"例外"<<endl;

try


char x;
cout<<"請輸入除數:";
cin>>x; 



if (x>='A' && x<='Z'){
throw 1;  }
 
cout<<"不是例外"<<endl; 


catch(int r)  

cout<<"除零例外"<<endl;

VC++ - 類別相減

#include <iostream.h>
class Addsum

int x;
 public:
    Addsum(int);
void sum(Addsum);   
void show();
};
Addsum::Addsum(int s)
{ x=s;}
void Addsum::sum(Addsum obj)
{ x-=obj.x;  }
void Addsum::show()
{ cout<<x;}
void main()

int x,y;
int*p =&x;
int*p1=&y;
cout<<"請輸入數值一"<<endl;
cin>>x;
cout<<"請輸入數值二"<<endl;
cin>>y;
Addsum a(*p),b(*p1);
a.show();
cout<<"-";
b.show();
cout<<"=";
a.sum(b);   
a.show();
cout<<endl;

類別 - 最大值

#include<iostream>

using namespace std;

class basedata {
private:
char no[6];     
char name[20];  
int math;
int china;  
    int english; 
int scoresum(void);
float scoreavg(void);
int scoremax(void);
public:
void inputbasedata();
void showbasedata();
};
void basedata::inputbasedata(void)  

cout << "****************************" << endl;
         cout << "學號:" ;
cin >> no;
cout <<endl<< "姓名:";
cin >> name ;
            cout <<endl<< "數學:";
cin >> math;
cout <<endl<< "國文:";
cin >> china;
cout <<endl<< "英文:";
cin >> english;



void basedata::showbasedata(void)  
 { 
int sum;
   float avg;
   int mymax;
   sum=scoresum();
   avg=scoreavg();
   mymax=scoremax();


cout << "***************************" << endl;

cout << "學號:" << no << endl;
cout << "姓名:" << name << endl;
cout << "數學:" << math << endl;
cout << "國文:" << china << endl;
cout << "英文:" << english << endl;
cout << "***************************" << endl;
              cout << "總分:" << sum<< endl;
         cout << "平均:" << avg << endl;
cout << "最大值:" << mymax << endl;

int basedata::scoresum()  
{   
int my_sum;
   my_sum=math+china+english;
   return my_sum;



float basedata::scoreavg()  
{   
float my_avg;
   my_avg=(math+china+english)/3;
   return my_avg;



int basedata::scoremax()  
{   
int my_max;
if (math > china){
if (math >english){
   my_max=math;

else{
my_max=english;


else{
if (china >english){
   my_max=china;

else{
my_max=english;



  
   return my_max;



void main()

basedata a[4];
int i;
cout<<"請輸入資料"<<endl;
for(i=0;i<4;i++){

      a[i].inputbasedata();

cout<<"資料輸出"<<endl;
for(i=0;i<4;i++){
a[i].showbasedata();

類別 - 加入平均合計

#include<iostream>

using namespace std;

class basedata {
private:
char no[6];     
char name[20];  
int math;
int china;  
    int english; 
int scoresum(void);
float scoreavg(void);
public:
void inputbasedata();
void showbasedata();
};
void basedata::inputbasedata(void)  

cout << "****************************" << endl;
         cout << "學號:" ;
cin >> no;
cout <<endl<< "姓名:";
cin >> name ;
            cout <<endl<< "數學:";
cin >> math;
cout <<endl<< "國文:";
cin >> china;
cout <<endl<< "英文:";
cin >> english;



void basedata::showbasedata(void)  
 { 
int sum;
   float avg;
   sum=scoresum();
   avg=scoreavg();

cout << "***************************" << endl;

cout << "學號:" << no << endl;
cout << "姓名:" << name << endl;
cout << "數學:" << math << endl;
cout << "國文:" << china << endl;
cout << "英文:" << english << endl;
cout << "***************************" << endl;
              cout << "總分:" << sum<< endl;
         cout << "平均:" << avg << endl;

int basedata::scoresum()  
{   
int my_sum;
   my_sum=math+china+english;
   return my_sum;



float basedata::scoreavg()  
{   
float my_avg;
   my_avg=(math+china+english)/3;
   return my_avg;




void main()

basedata a[4];
int i;
cout<<"請輸入資料"<<endl;
for(i=0;i<4;i++){

      a[i].inputbasedata();

cout<<"資料輸出"<<endl;
for(i=0;i<4;i++){
a[i].showbasedata();

2008年8月24日星期日

VC++ - 樣版 - 類別

#include <iostream>
using namespace std;

class AddValue {
  int i;
public:
  AddValue(int b1) 
  {
  for(i=0;i<b1;i++)
  i=b1+1; 
  }
  friend void F1(const AddValue&);
};
 
void F1(const AddValue& p1) {  
  cout << p1.i << endl; 

 
void main()

int y;
cout<<"請輸入數值:";
cin>>y;
  F1(y); 
 

VC++ - 樣版 - 明顯特殊化

#include <cstring>
#include <iostream>
using namespace std;
 
template<typename T> const T& 
min(const T& a, const T& b) 

if (a < b) 
return a;
else
return b;

 
template<>  
const int* const& min<const int*>(const int* const& a,const int* const& b) 

if (a < b) 
return a;
else
return b;



void main() 

  int s1,s2; 
   cout << "請輸入數值1 : ";
   cin >>s1;
cout  << endl << "請輸入數值2 : ";
   cin >>s2;
  cout  << endl << "最小值為:"<<min(s1, s2) << endl;

VC++ - 樣版函式

#include <iostream>
using namespace std;

template<class T>  
void ListArray(const T a1,int count)  

   for (int i = 0; i < count; i++ )
      cout<<a1[i]<<" ";
   cout << endl;


void main()

   int y  ;  
   char a[5],b[6]="abcde"; 
   cout << "陣列內容為:" << endl;
 for ( y = 0; y < 5; y++ )
      a[y] = b[y];

   ListArray(a,2);   
   ListArray(b,5);

VC++ - 多載一元運算子

#include<iostream>
using namespace std;


class my_Score

public:
int my_var;   
my_Score(int a) 

my_var=a;

};


int operator+(int x,my_Score s1)

return (x+s1.my_var);


void main()

         int y;
         cout << "請輸入一個數值: " <<endl;
         cin>>y;
my_Score my_st(y);  
cout <<"100 +"<< y<< "=" << (100+my_st) << endl; 

VC++ - 後置式多載

#include<iostream>
using namespace std;

class my_Score

public:
int my_var;  
my_Score()

my_var=88;

my_Score(int a)

my_var=a;

my_Score operator++(int);  
my_Score operator--(int);
};

my_Score my_Score::operator++(int)

return my_Score(my_var++);


my_Score my_Score::operator--(int)

return my_Score(my_var--);


void main()

my_Score st1(3);  
my_Score st2;      
st1++;          
st2--;


cout << "第一次" << st1.my_var  << endl;
cout << "第二次" << st2.my_var  << endl;

 
妹咕數位學園歡迎網友們來信指教 妹咕信箱