首页 > 其他分享 >实验1 类和对象

实验1 类和对象

时间:2023-10-17 23:11:30浏览次数:23  
标签:std const cout 对象 double int 实验 include

  task1.cpp

#include<iostream>
#include<string>
#include<vector>
#include<array>

template<typename T>
void output1(const T&obj)
{
for(auto i :obj)
std::cout<<i<<",";
std::cout<<"\b\b\n";
}

template<typename T>
void output2(const T&obj)
{
for(auto p=obj.begin();p!=obj.end();++p)
std::cout<<*p<<",";
std::cout<<"\b\b\n" ;
}


void test_array()
{

std::array<int,5> x1;
std::cout<<"x1.size()="<<x1.size()<<std::endl;
x1.fill(42);
x1.at(0)=999;
x1[4]=-999;
std::cout<<"x1:";
output1(x1);
std::cout<<"x1:";
output2(x1);

std::array<int,5> x2;
x1=x2;
std::cout<<std::boolalpha<<(x1==x2)<<std::endl;
x2.fill(22);
std::cout << "x2: ";
output1(x2);
std::swap(x1, x2);
std::cout << "x1: ";
output1(x1);
std::cout << "x2: ";
output1(x2);
}


void test_vector() {
using namespace std;


vector<int> v1;
cout << v1.size() << endl;
cout << v1.max_size() << endl;
v1.push_back(55);
cout << "v1: ";
output1(v1);


vector<int> v2 {1, 0, 5, 2};
v2.pop_back();
v2.erase(v2.begin());
v2.insert(v2.begin(), 999);
v2.insert(v2.end(), -999);
cout << v2.size() << endl;
cout << "v2: ";
output2(v2);


vector<int> v3(5, 42);
cout << "v3: ";
output1(v3);


vector<int> v4(v3.begin(), v3.end()-2);
cout << "v4: ";
output1(v4);
}


void test_string() {
using namespace std;


string s1{"oop"};
cout << s1.size() << endl;
for(auto &i: s1)
i -= 32;
s1 += "2023";
s1.append(", hello");
cout << s1 << endl;
}
int main() {
using namespace std;
cout << "===========测试1: array模板类基础用法===========" << endl;
test_array();
cout << "\n===========测试2: vector模板类基础用法===========" << endl;
test_vector();
cout << "\n===========测试3: string类基础用法===========" << endl;
test_string();
}

 运行结果

 

task2.cpp

#include <iostream> 
#include <complex>
void test_std_complex() 
{ 
using namespace std; 
complex<double> c1{3, 4}, c2{4.5}; 
const complex<double> c3{c2}; 
cout << "c1 = " << c1 << endl; 
cout << "c2 = " << c2 << endl; 
cout << "c3 = " << c3 << endl; 
cout << "c3.real = " << c3.real() << ", " << "c3.imag = " << c3.imag() << endl; 
cout << "c1 + c2 = " << c1 + c2 << endl; 
cout << "c1 - c2 = " << c1 - c2 << endl; 
cout << "abs(c1) = " << abs(c1) << endl;
cout << boolalpha; 
cout << "c3 == c2: " << (c3 == c2) << endl; 
complex<double> c4 = 2; 
cout << "c4 = " << c4 << endl; c4 += c1;
cout << "c4 = " << c4 << endl;
  }
int main() 
{ 
    test_std_complex(); 
}

运行结果

task3.cpp

#include <iostream> 
#include <string> 
using namespace std; 
class T { 
public: 
T(int x = 0, int y = 0); 
T(const T &t); 
T(T &&t); 
~T(); 
void set_m1(int x); 
int get_m1() const; 
int get_m2() const;  
void display() const; 
friend void func(); 
private: 
int m1, m2; 
public: 
static void disply_count(); 
public: 
static const string doc;
static const int max_count;
private: 
static int count; 
};

const string T::doc{"a simple class"}; 
const int T::max_count = 99; 
int T::count = 0; 
 
T::T(int x, int y): m1{x}, m2{y} { 
++count; 
cout << "constructor called.\n"; 
}
T::T(const T &t): m1{t.m1}, m2{t.m2} { 
++count; 
cout << "copy constructor called.\n"; 
}
T::T(T &&t): m1{t.m1}, m2{t.m2} { 
++count; 
cout << "move constructor called.\n"; 
}
T::~T() { 
--count; 
cout << "destructor called.\n"; 
}
void T::set_m1(int x) { 
m1 = x; 
}
int T::get_m1() const { 
return m1; 
}
int T::get_m2() const { 
return m2; 
}
void T::display() const { 
cout << m1 << ", " << m2 << endl; 
}

void T::disply_count() { 
cout << "T objects: " << count << endl; 
}

void func() { 
T t1; 
t1.set_m1(55); 
t1.m2 = 77; 
t1.display(); 
}
void test() 
{ 
cout << "T class info: " << T::doc << endl; 
cout << "T objects max_count: " << T::max_count << endl; 
T::disply_count(); 
T t1; 
t1.display(); 
t1.set_m1(42); 
T t2{t1}; 
t2.display(); 
T t3{std::move(t1)}; 
t3.display(); 
t1.display();
T::disply_count();
}
int main() { 
cout << "============测试类T============" << endl; 
test(); 
cout << endl; 
cout << "============测试友元函数func()============" << endl; 
func(); 
}

测试结果

task4

#include <iostream> 
#include <string> 
#include <iomanip> 
using namespace std; 
// 矩形类Rect的定义 
// 待补足 
// ××× 
// 普通函数:输出矩形信息 
class Rect{
public:
    static const string doc;
    static const int size_info(){
        return count;
    } 
private:
    static const int size;
    static int count;
    
    double length,width;
public:
    Rect(double l=2.0,double w=1.0){
        length=l;
        width=w;
    };
    ~Rect(){
        
    };
    double len() const {return length;}
    double wide() const {return width;}
    double area()  const { return length * width;}
    double circumference() const { return 2 * (length + width);}
    void resize(double times){
        length *= times;
        width *= times;
    };
    void resize(double l_times, double w_times){
        length *= l_times;
        width *= w_times;
    };
}; 
const string Rect::doc = "a simple Rect class";
void output(const Rect &r) { 
cout << "矩形信息: " << endl; 
cout << fixed << setprecision(2); // 控制输出格式:以浮点数形式输出,小数部分保留两位 
// 补足代码:分行输出矩形长、宽、面积、周长 
cout << "长:     " << r.len() << endl;
cout << "宽:     " << r.wide() << endl;
cout << "面积:   " << r.area() << endl;
cout << "周长:   " << r.circumference() << endl;
}
// 测试代码 
void test() { 
cout << "矩形类信息: " << Rect::doc << endl; 
cout << "当前矩形对象数目: " << Rect::size_info() << endl; 
Rect r1; 
output(r1); 
Rect r2(4, 3); 
output(r2); 
Rect r3(r2); 
r3.resize(2); 
output(r3); 
r3.resize(5, 2); 
output(r3); 
cout << "当前矩形对象数目: " << Rect::size_info() << endl; 
}
// 主函数 
int main() { 
test(); 
cout << "当前矩形对象数目: " << Rect::size_info() << endl; 
}

运行结果

 task5.cpp

#include <iostream> 
#include <cmath> 
// 复数类Complex:定义 
class Complex{
    private:
        double real, imag;
    public:
        Complex(double r=0,double i=0){
        real=r;
        imag=i;
        };
        Complex(const Complex &c){
            real=c.real;
            imag=c.imag;
        }
        double get_real() const {
            return real;
        }
        double get_imag() const {
            return imag;
        }
        void add(const Complex &c1){
            real += c1.get_real();
            imag += c1.get_imag();
        }
        void show(){
            std::cout << real;
            if (imag>0) 
            std::cout << " + " << abs(imag) << 'i';
            if (imag<0) 
            std::cout << " - " << fabs(imag) << 'i';
        }
        void show() const{
        std::cout << real;
        if (imag>0) std::cout << "+" << abs(imag) << "i";
        if (imag<0) std::cout << "-" << abs(imag) << "i";    
        }
    public:
        friend Complex add(const Complex &c1, const Complex &c2){return Complex(c1.get_real() + c2.get_real(),c1.get_imag() + c2.get_imag());}
        friend bool is_equal(const Complex &c1, const Complex &c2){    return (c1.real == c2.real) && (c1.imag == c2.imag);}
        friend double abs(const Complex &c1){return sqrt(c1.real * c1.real + c1.imag * c1.imag);}
}; 
// 复数类Complex: 测试 
void test() { 
using namespace std; 
Complex c1(3, -4); 
const Complex c2(4.5); 
Complex c3(c1); 
cout << "c1 = "; 
c1.show(); 
cout << endl; 
cout << "c2 = "; 
c2.show(); 
cout << endl; 
cout << "c2.imag = " << c2.get_imag() << endl; 
cout << "c3 = "; 
c3.show(); 
cout << endl; 
cout << "abs(c1) = "; 
cout << abs(c1) << endl; 
cout << boolalpha; 
cout << "c1 == c3 : " << is_equal(c1, c3) << endl; 
cout << "c1 == c2 : " << is_equal(c1, c2) << endl; 
Complex c4; 
c4 = add(c1, c2); 
cout << "c4 = c1 + c2 = "; 
c4.show(); 
cout << endl; 
c1.add(c2); 
cout << "c1 += c2, " << "c1 = "; 
c1.show(); 
cout << endl; 
}
int main() { 
test(); 
}
View Code

运行结果

 

标签:std,const,cout,对象,double,int,实验,include
From: https://www.cnblogs.com/PerfectAllKill/p/17761723.html

相关文章

  • 实验1
    试验任务1task1.cpp源码//标准库string,vector,array基础用法#include<iostream>#include<string>#include<vector>#include<array>//函数模板//对满足特定条件的序列类型T对象,使用范围for输出template<typenameT>voidoutput1(constT&obj){for......
  • 实验2
    实验任务1#include<stdio.h>#include<stdlib.h>#include<time.h>#defineN5#defineN1374#defineN2465intmain(){intnumber;inti;srand(time(0));for(i=0;i<N;++i){number=rand()%(N2-N1+1)+N1;printf("202......
  • 实验2
     问题1:确保输出的数值在374-465之间问题2:输出4个“学号+0+三位随机数”形式的随机数值#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<time.h>#defineN5#defineN1374#defineN2465intmain(){intnumber;inti;......
  • 【产品有效期验证之加速实验方法】
    使用期限:大于等于5年评价路径:整机测试临床使用模式:贮存、待机、运行加速环境实验:是一种激发实验,通过强化应力环境来进行可靠性实验。加速水平通常用加速因子来体现。加速因子:设备正常工作应力下寿命与加速环境下的寿命之比。使用工具:环境实验箱1、温度加速因子(TAF)Arrhenius模型计......
  • 实验一
    #include<iostream>#include<string>#include<vector>#include<array>template<typenameT>voidoutput1(constT&obj){for(autoi:obj)std::cout<<i<<",";std::cout<<"\b\b\......
  • 实验五 队列的基本操作及应用
    实验五队列的基本操作及应用作业要求:实验时间:第7、8周实验目的:掌握队列的初始化、判空、取队头元素、出队、入队、输出队列元素等基本操作实验要求:1、认真阅读和掌握教材上和本实验相关的算法。2、上机将链队列或循环队列的相关算法实现。3、实现下面实验内容要求的功能,并......
  • 实验一 类与对象_基础编程1
    task1.cpp1#include<iostream>2#include<string>3#include<vector>4#include<array>56template<typenameT>7voidoutput1(constT&obj){8for(autoi:obj)9std::cout<<i<<","......
  • 实验2
    任务一源代码 任务一运行结果 任务一问题回答 任务二源代码  任务二运行结果 任务三源代码  任务三运行结果 任务四源代码  任务四运行结果  任务五源代码  任务五运行结果  任务六源代码  任务六运行结果 ......
  • 实验一
    #include<iostream>#include<string>#include<vector>#include<array>//函数模板//对满足特定条件的序列类型T对象,使用范围for输出template<typenameT>voidoutput1(constT&obj){for(autoi:obj)std::cout<<i<<",";......
  • 实验2
    #include<stdio.h>#include<stdlib.h>#include<time.h>#defineN5#defineN1374#defineN2465intmain(){ intnumber; inti; srand(time(0)); for(i=0;i<N;++i){ number=rand()%(N2-N1+1)+N1; printf("2......