首页 > 其他分享 >实验2 类与对象(2)

实验2 类与对象(2)

时间:2022-10-16 14:45:03浏览次数:45  
标签:real std img 对象 double Complex 实验 c1

Task 4

hpp文件如下

#pragma once

#include<iostream>
#include<complex>

class Complex
{
public:
	Complex();
	Complex(double r,double i = 0.0);
	Complex(const Complex& obj);
	double get_real()const { return real; };
	double get_imag()const { return img; };
	void show()const;
	void add(Complex c1);
	friend Complex add(Complex c1,Complex c2);
	friend bool is_equal(Complex c1,Complex c2);
	friend double abs(Complex c);
private:
	double real;
	double img;
};
Complex::Complex() :real{ 0 }, img{ 0 } {}
Complex::Complex(double r, double i): real{ r }, img{ i } {}
Complex::Complex(const Complex& obj) :real{ obj.real }, img{ obj.img } {}
void Complex::add(Complex c1){
	real += c1.real;
	img += c1.img;

}
Complex add(Complex c1, Complex c2) {
	Complex c3;
	c3.real = c1.real + c2.real;
	c3.img = c1.img + c2.img;
	return c3;
}
bool is_equal(Complex c1, Complex c2)
{
	if (c1.img == c2.img && c1.real == c2.real)
		return 1;
	else
		return 0;
 }
double abs(Complex c)
{
	double count = 0;
	count = sqrt(c.img * c.img + c.real * c.real);
	return count;
}

void Complex::show()const{
	if (img > 0)
		std::cout << real << "+" << img << "i" << std::endl;
	else if (img < 0)
		std::cout << real << img << "i" << std::endl;
	else if (img == 0)
		std::cout << real << std::endl;
}

cpp文件如下:

#include "Complex.hpp"
#include <iostream>
// 类测试
void test() {
	using namespace std;
	Complex c1(3, -4);
	const Complex c2(7.8);
	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();
}

运行结果截图

Task 5

hpp文件如下:

#pragma once
#include<iostream>;
#include<string>
class User {
public:
	User(std::string name0, std::string password0 = "111111",std::string email0 = "");
	void set_email();
	void change_passwd();
	void print_info();
	void static print_n() {
		std::cout << "共有 " << n << " 名用户" << std::endl;
	}
private:
	std::string name;
	std::string email;
	std::string passwd;
	static int n;


};
int	User::n = 0;
User::User(std::string name0,  std::string password0,std::string email0) :name{ name0 }, email{ email0 }, passwd{ password0 } { n++; }
void User::set_email() {
	std::string email1;
	std::cout << "请用户用键盘输入邮箱地址!" << std::endl;
	std::cin >> email1;
	if (email1 != "")
	{
		email = email1;
		std::cout << "邮箱设置成功!" << std::endl;
	}
	else
	std::cout << "未设置邮箱,将使用默认值!" << std::endl;
		
}
void User::change_passwd() {
	std::cout << "请输入旧密码!" << std::endl;
	std::string password;
	for (int i = 0; i < 3; i++)
	{
		flag:
		std::cin >> password;
		if (password != passwd)
		{
			std::cout << "原密码不正确,请重新输入!";
			std::cout << "已连续输入错误" << i + 1 << "次!"<<std::endl;
			if (i == 2)
			{
				std::cout << "已连续输入三次错误密码,请稍后再试。"<<std::endl;
				goto flag;
			}

		}
		else if (password == passwd)
		{
			std::cout << "原密码验证成功,请输入新密码!"<<std::endl;
			std::cin >> passwd;
			std::cout << "密码修改成功!" << std::endl;
			break;
		}
	}

}
void User::print_info() {
	int length = passwd.length();
	std::cout << "用户名为:" << name << std::endl;
	std::cout << "邮箱为:" << email << std::endl;
	std::cout << "密码为:";
	while (length--)
	{
		std::cout << "*";
		if (length == 0)
			std::cout << std::endl;
	}
}

cpp文件如下:

#include "User.hpp"
#include <iostream>
// 测试User类
void test() {
	using std::cout;
	using std::endl;
	cout << "testing 1......\n";
	User user1("Li", "123456", "[email protected]");
	user1.print_info();
	cout << endl
		<< "testing 2......\n\n";
	User user2("lixuan");
	user2.change_passwd();
	user2.set_email();
	user2.print_info();
	cout << endl;
	User::print_n();
}
int main() {
	test();
	}

运行结果如下:

实验心得

1.对于类与对象的用法概念知识点等加深了认识。

2.对于const等修饰词有了更为深刻的认识。

标签:real,std,img,对象,double,Complex,实验,c1
From: https://www.cnblogs.com/lkx1366070554/p/16796201.html

相关文章

  • Java基础(七)| 类、对象、封装和构造详解
    ⭐本专栏旨在对JAVA的基础语法及知识点进行全面且详细的讲解,完成从0到1的java学习,面向零基础及入门的学习者,通过专栏的学习可以熟练掌握JAVA编程,同时为后续的框架学习,进阶开......
  • 实验四
    一)基本要求利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器;通过Postman工具调用OpenDaylight提供的API下发流表,实现拓扑内主机h1和h3网络中断10s。......
  • 实验一 C语言开发环境使用和编程初体验
    //实验一#include<stdio.h>intmain(){printf("OO\n");printf("<H><H>\n");printf("IIII\n");return0;}//task1_1.c#include<......
  • 实验一
    #include<stdio.h>#include<stdlib.h>intmain(){printf("o\n");printf("<H>\n");printf("II\n");return0;}#include<stdio.h>#include......
  • 实验4:开源控制器实践---OpenDaylight
    利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器;通过Postman工具调用OpenDaylight提供的API下发流表,实现拓扑内主机h1和h3网络中断10s。......
  • 实验2 类和对象(2)
    实验任务4:程序源码:complex.hpp1#pragmaonce2#include<iostream>3#include<cmath>4usingnamespacestd;5classComplex{6public:7Com......
  • 实验4:开源控制器实践——OpenDaylight
    一、实验目的能够独立完成OpenDaylight控制器的安装配置;能够使用Postman工具调用OpenDaylightAPI接口下发流表。二、实验环境Ubuntu20.04Desktopamd64三、实验......
  • 实验4:开源控制器实践——OpenDaylight
    一、实验目的1、能够独立完成OpenDaylight控制器的安装配置;2、能够使用Postman工具调用OpenDaylightAPI接口下发流表。二、实验环境Ubuntu20.04Desktopamd64三、......
  • Java类和对象小结
    类与对象类是一个模板:抽象的。对象是一个具体的实例:具体的方法定义、调用对应的引用引用类型:基本类型(8大基本类型)对象是通过引用来操作的属性:字段Fie......
  • 实验5:开源控制器实践——POX
    实验目的能够理解POX控制器的工作原理;通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;能够运用POX控制器编写自定义网络应用......