首页 > 其他分享 >20240521考试(1.打印数字字符 2.打印面积(类的继承)3.简单的矩阵加减)

20240521考试(1.打印数字字符 2.打印面积(类的继承)3.简单的矩阵加减)

时间:2024-05-26 21:02:20浏览次数:29  
标签:const Matrix int double void 打印 加减 return 20240521

目录

1.打印数字字符

2.打印面积(类的继承)

3.简单的矩阵加减


1.打印数字字符

#include <iostream>
#include <iomanip>
using namespace std;

class datatype
{
public:
   datatype()
   {

   }
   datatype(char c):c(c),i(0),f(0)
   {

   }
   datatype(int i):c(0),i(i),f(0)

   {

   }
   datatype(float f):c(0),i(0),f(f)
   {

   }

   void setC(char c)
   {
       this->c=c;
   }
   void setI(int i)
   {
       this->i=i;
   }
   void setF(float f)
   {

       this->f=f;

   }
   char getC()
   {
       return c;
   }
   int getI()
   {
       return i;
   }
   float getF()
   {
       cout << fixed << setprecision(2);
       return f;
   }
   void print()
   {
       if(getC())
       cout << "character:" << getC() << endl ;
       if(getI())
       cout << "integer:" << getI() << endl ;
       if(getF())
       cout << "floating point:" << getF() << endl;
   }
private:
    char c;
    int i;
    float f;


};


int main()
{
    char c;
    int  i;
    float f;
    cin>>c>>i>>f;
    datatype A(c), B(i), C(f);
    A.print();
    B.print();
    C.print();
}

2.打印面积(类的继承)

#include<iostream>
#include<iomanip>
using namespace std;

class Area_cl
{
public:
    Area_cl(){};

    virtual ~Area_cl(){};

    void setHeight(double h)
    {
        height=h;
    }
    void setWidth(double w)
    {
        width=w;
    }

    double getHeight()
    {
        return height;
    }
    double getWidth()
    {
        return width;
    }
    virtual double area(){};//别忘了{}
    virtual void showArea(){};
private:
    double height;
    double width;
};

class Rectangle:public Area_cl
{
public:
    Rectangle(){};
    Rectangle(double a,double b)
    {
        setHeight(a);
        setWidth(b);
    }

    ~Rectangle()
    {

    }

    double area()
    {
        cout << fixed << setprecision(2);
        return getHeight()*getWidth();
    }
    void showArea()
    {
        cout << "the rectangle's area is " << area() << endl;
    }

};
class Isosceles:public Area_cl
{
public:
    Isosceles(){};
    Isosceles(double h,double w)
    {
        setHeight(h);
        setWidth(w);

    }

    ~Isosceles()
    {

    }

    double area()
    {
        cout << fixed << setprecision(2);
        return getHeight()*getWidth()/2;
    }
    void showArea()
    {
        cout << "the Isosceles's area is " << area() << endl;
    }

};
int main()
{
    Area_cl* p;
    double r,s;
    cin>>r>>s;
    Rectangle b(r,s);
    cin>>r>>s;
    Isosceles i(r,s);
    p=&b;
    p->showArea();
    p= &i;
    p->showArea();
    return 0;
}

3.简单的矩阵加减

/**
 *注意流输入和流提取的区别:
 *对于输出操作符 (<<) 加上 const:
 *(即 const Matrix &m),
 *意味着你在保证这个操作不会修改传递进来的矩阵对象。
 *这对于输出操作符是合理的,因为你只是读取对象的信息并打印出来,并不需要改变对象的状态。
 *对于输入操作符 (>>) 不加 const:
 *(即 Matrix &m 而非 const Matrix &m)。
 *这是因为输入操作符的目的是从输入流中读取数据来填充对象,这一过程通常涉及修改对象的成员变量。
 */

#include <iostream>
#include <string>
using namespace std;

class Matrix
{
    friend Matrix operator+(const Matrix & m1,const Matrix & m2);
    friend Matrix operator-(const Matrix & m1,const Matrix & m2);
    friend ostream& operator<< (ostream& ,const Matrix& );
    friend istream& operator >> (istream&  ,Matrix& );

public:

    Matrix(){};
    Matrix(int i,int j)
    {
        setI(i);
        setJ(j);
    }

    ~Matrix(){};

    void setI(int i)
    {
        this->i=i;
    }
    void setJ(int j)
    {
        this->j=j;
    }

    int getI()
    {
        return i;
    }
    int getJ()
    {
        return j;
    }

private:
    int i;
    int j;
    int data[10][10];
};
Matrix operator+(const Matrix & m1,const Matrix & m2)
{
    Matrix m(m1.i,m1.j);
    for(int l=0;l<m.i;l++)
    {
        for(int k=0;k<m.j;k++)
        {
            m.data[l][k]=m1.data[l][k]+m2.data[l][k];
        }
    }
    return m;
}
Matrix operator-(const Matrix & m1,const Matrix & m2)
{
    Matrix m(m1.i,m1.j);
    for(int l=0;l<m.i;l++)
    {
        for(int k=0;k<m.j;k++)
        {
            m.data[l][k]=m1.data[l][k]-m2.data[l][k];
        }
    }
    return m;
}

ostream& operator<< (ostream& os ,const Matrix& m)
{
    for(int l=0;l<m.i;++l)
    {
        for(int k=0;k<m.j;++k)
        {
            os << m.data[l][k] << " ";
        }
        os << endl;
    }
    return os;
}
istream& operator>> (istream& is,Matrix& m)
 {
     for(int l=0;l<m.i;++l)
    {
        for(int k=0;k<m.j;++k)
        {
            is >> m.data[l][k] ;
        }

    }
    return is;
 }
int main()
{
    int i,j;
    cin >> i >> j;
    Matrix m1(i,j),m2(i,j);
    cin>>m1;
    cin>>m2;

    cout << "m1 + m2 :" << endl ;
    cout <<(m1+m2);
    cout << "m1 - m2 :" << endl ;
    cout <<(m1-m2);

    return 0;
}

标签:const,Matrix,int,double,void,打印,加减,return,20240521
From: https://blog.csdn.net/2301_80202274/article/details/139104125

相关文章

  • linux 死锁排查以及线程信息打印
     脚本名称,gstack.sh#!/bin/shiftest$#-ne1;thenecho"Usage:`basename$0.sh`<process-id>"1>&2exit1fiiftest!-r/proc/$1;thenecho"Process$1notfound."1>&2exit1fi#GDBdoesn&#......
  • print-js打印
    Print.js--网页文件打印 官网地址是:https://printjs.crabbly.com/Print.js有四种打印文档类型可用:’pdf‘,’html','图像’和json。默认类型是’pdf'。它的基本用法是呼叫printJS()只需输入一个PDF文档网址:printJS('docs/PrintJS.pdf')。对于图像文件,想法是一样......
  • 只打印一次(状态改变时)
    为了防止日志一直打印输出,只在状态改变时打印一次#include<iostream>intmain(){/////////////////////////////////////////对于两种状态切换情况{boolm_bOnline=true;//默认在线boolm_bFlag1=true;//默认都是“开”bo......
  • 键盘打印名字(王一H)
    #include<iostream>#include<vector>#include<windows.h>#include<conio.h>usingnamespacestd;intmain(){HANDLEhandle=GetStdHandle(STD_OUTPUT_HANDLE);COORDcoord={0,5};SetConsoleCursorPosition(handle,coord)......
  • 打印9*9乘法表(递归或压缩矩阵)python
    打印9*9表defprint_multiplication_table(row,col):ifrow>10:return#递归结束条件ifcol==row:print()#换行print_multiplication_table(row+1,1)#递归调用下一行else:print(f"{row-1}*{col}={(......
  • lua打印调用的函数文件及行数
    lua根据调用堆栈可以打印调谁调用了我 string.split=function(s,delim)localsplit={}localpattern="[^"..delim.."]+"string.gsub(s,pattern,function(v)table.insert(split,v)end)returnsplitendfunctiongetWhoCallsMe()......
  • 关于打印泄密的典型案例分享
    案例一:遗留在打印机的敏感文件情景:一家大型制药公司的一名员工在下班前打印了一些包含新药品研发数据的文件。由于急于离开,他忘记了取走这些文件。第二天,一名新入职的员工发现了这些文件,并在无意中将其拍照分享到了社交媒体,导致敏感信息泄露。教训:企业应该实施严格的打印管理......
  • 打印安全:防止打印过程中的商业机密泄露
    在数字化办公日益普及的今天,打印安全常常成为企业信息保护中被忽视的一环。商业机密在打印过程中泄露,可能会给企业带来巨大的损失。本文将探讨如何通过一系列措施,确保打印过程中的商业机密安全。一、打印安全的重要性打印设备作为企业中常见的输出工具,经常处理敏感文件和商业机......
  • StiReport多次打印莫名其妙会有一次打印很慢
    1.问题描述:正常StiReport打印标签第一次初始化,电脑性能不好的情况下,可能会超过10秒才能打印出标签。如果是多线程系统可能会更慢。解决方法:提前初始化和加载标签模板,执行下面一段代码,可以封装类库放在实例化方法中。report=newStiReport();......
  • 打印机共享0x0000709错误的解决
    家里两台电脑,一台台式机,一台笔记本,打印机HP1020连接在台式机上,笔记本和台式机连到同一个局域网,之前都能用笔记本直接打印(台式机上打印机己设置共享),曾几何时不能打印了,显示0x0000709错误,如下图百度了好几篇文章,多种方法试了,没效果,还有一个号称“完美解决的工具”,安装后一运行......