你好,复变函数2.0

 

 第一行:0 或 1

 第二行:(空格)+函数(后缀)

#pragma warning(disable:4996)
#include <easyx.h>
#include <stdio.h>
#include <math.h>
#define PI 3.141592653589793
#define E  2.718281828459045
#define K  (1.0 / 256.0)
#define K_1 256.0
struct C {
	double i;
	double r;
	C operator = (C n) {
		i = n.i; r = n.r;
		return C({ i, r });
	}
	C operator + (C n) {
		return C({ i + n.i, r + n.r });
	}
	C operator - (C n) {
		return C({ i - n.i, r - n.r });
	}
	C operator * (C n) {
		return C({ r * n.i + i * n.r, r * n.r - i * n.i});
	}
	C operator / (C n) {
		return C({
			(i * n.r - r * n.i) / (n.i * n.i + n.r * n.r),
			(i * n.i + r * n.r) / (n.i * n.i + n.r * n.r)
		});
	}
	void print() {
		printf("%lfi%+lf", i, r);
	}
};
int top = 0;
int len = 0;
int _line;
int p[4096][2];
char str[512];
C stack[512];
void getnum(int l) {
	bool k = false;
	double x = 1.0;
	stack[top] = C({ 0, 0 });
	for (int i = l; str[i] != ' ' && str[i] != '\0'; i++) {
		if (k) x *= 10;
		if (str[i] != '.')
			stack[top] = stack[top] * C({ 0, 10 }) + C({ 0, double(str[i] - '0') });
		else k = true;
	}
	stack[top] = stack[top] / C({ 0, x });
	top++;
}
void del(C c) {
	for (int i = 0; str[i] != '\0'; i++) {
		if (str[i] == ' ') {
			i++;
			if (str[i] >= '0' && str[i] <= '9')
				getnum(i);
			if (str[i] == 'e')
				stack[top++] = C({ 0, E });
			if (str[i] == 'x')
				stack[top++] = c;
			if (str[i] == '+') {
				top--;
				stack[top - 1] = stack[top - 1] + stack[top];
			}
			if (str[i] == '-') {
				top--;
				stack[top - 1] = stack[top - 1] - stack[top];
			}
			if (str[i] == '*') {
				top--;
				stack[top - 1] = stack[top - 1] * stack[top];
			}
			if (str[i] == '/') {
				top--;
				stack[top - 1] = stack[top - 1] / stack[top];
			}
			if (str[i] == '^') {
				top--;
				if (stack[top - 1].i == 0) {
					C c;
					c.r = cos(log(pow(stack[top - 1].r, stack[top].i))) * pow(stack[top - 1].r, stack[top].r);
					c.i = sin(log(pow(stack[top - 1].r, stack[top].i)));
					stack[top - 1] = c;
				}
				else if (stack[top].i == 0) {
#define A(x, y) (sqrt((x) * (x) + (y) * (y)))
					C c;
					c.r = pow(A(stack[top - 1].i, stack[top - 1].r), stack[top].r) * cos(stack[top].r * asin(stack[top - 1].i / A(stack[top - 1].i, stack[top - 1].r)));
					c.i = pow(A(stack[top - 1].i, stack[top - 1].r), stack[top].r) * sin(stack[top].r * asin(stack[top - 1].i / A(stack[top - 1].i, stack[top - 1].r)));
					stack[top - 1] = c;
#undef A
				}
				else {
					MessageBox(NULL,L"暂不支持此运算",  L"Error", MB_OK);
				}
			}
		}
	}
	p[len][0] = 512 + int(stack[0].r * K_1 + 0.5);
	p[len][1] = 512 - int(stack[0].i * K_1 + 0.5);
	if (_line == 0)
		putpixel(p[len][0], p[len][1], RGB(0, 255, 255));
	len++;
}
int main() {
	initgraph(1024, 1024, EX_SHOWCONSOLE);
	setlinecolor(RGB(0, 255, 255));
	scanf("%d", &_line);
	getchar();
	gets_s<512>(str);
	for (int y = -1024; y < 1024; y += 16) {
		len = 0;
		for (int x = -1024; x < 1024; x += 1) {
			top = 0;
			C c = { y * K, x * K };
			del(c);
		}
		if (_line == 1)
			for (int i = 0; i < len - 1; i++) {
				line(p[i][0], p[i][1], p[i + 1][0], p[i + 1][1]);
			}
	}
	for (int y = -1024; y < 1024; y += 16) {
		len = 0;
		for (int x = -1024; x < 1024; x += 1) {
			top = 0;
			C c = { x * K, y * K };
			del(c);
		}
		if (_line == 1)
			for (int i = 0; i < len - 1; i++) {
				line(p[i][0], p[i][1], p[i + 1][0], p[i + 1][1]);
			}
	}
	saveimage(L"1.jpg");
	printf("--------\n");
	getchar();
	closegraph();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/733100.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【ai】tritonserver 的测试sdk部署

HybrIKHybrIK 环境 conda create -n hybrik python=3.8 -y 虚拟环境 zhangbin@ubuntu-server:~/miniconda3/bin$ pip config set global.index-url https: …

make与makefile

目录 一、make的默认目标文件与自动推导 二、不能连续make的原因 执行原理 touch .PHONY伪目标 make指令不回显 makefile多文件管理 简写依赖方法 三、回车与换行 四、缓冲区 一、make的默认目标文件与自动推导 假设这是一个makefile文件&#xff0c;make的时候默认生…

Kubernetes Dashboard

Minikube 环境搭建 Kubernetes 的基本架构 Kubernetes 声明式语言 YAML YAML操作Kubernetes核心对象 CentOs搭建Kubernetes集群 Kubernetes进阶对象Deployment、DaemonSet、Service Kubernetes进阶对象Ingress、Ingress Class、Ingress Controller Kubernetes集群部署项目实践 …

XTDrone-无人机与无人船协同初步-配置教程

说明&#xff1a;配置该教程时所使用的是Ubuntu20.04 1 海洋与无人船仿真环境搭建 cp -r ~/XTDrone/sitl_config/usv/* ~/catkin_ws/src/ cd catkin_ws catkin build # or catkin_make 说明&#xff1a;由于官方所编写的脚本时几年之前的&#xff0c;所以很多东西不符合现在…

深入分析并可视化城市轨道数据

介绍 中国城市化进程加速中&#xff0c;城市轨道交通的迅速扩张成为提升城市运行效率和居民生活品质的关键。这一网络从少数大城市延伸至众多大中型城市&#xff0c;映射了经济飞跃和城市管理现代化。深入分析并可视化城市轨道数据&#xff0c;对于揭示网络特性、评估效率、理…

JavaScript学习笔记(二)

12、数字 常规用法和java的用法相似&#xff0c;就不再做详细的记录, JavaScript 数字 以下只记录特殊用法&#xff1a; 12.1 数字字符串运算 在所有数字运算中&#xff0c;JavaScript 会尝试将字符串转换为数字&#xff1a; var x "100"; var y "10"…

MySQL性能问题诊断方法和常用工具

作者介绍&#xff1a;老苏&#xff0c;10余年DBA工作运维经验&#xff0c;擅长Oracle、MySQL、PG数据库运维&#xff08;如安装迁移&#xff0c;性能优化、故障应急处理等&#xff09; 公众号&#xff1a;老苏畅谈运维 欢迎关注本人公众号&#xff0c;更多精彩与您分享。MySQL运…

python入门基础知识(错误和异常)

本文部分内容来自菜鸟教程Python 基础教程 | 菜鸟教程 (runoob.com) 本人负责概括总结代码实现。 以此达到快速复习目的 目录 语法错误 异常 异常处理 try/except try/except...else try-finally 语句 抛出异常 用户自定义异常 内置异常类型 常见的标准异常类型 语法…

每天写java到期末考试--接口1--基础--6.22

规则&#xff1a; 练习&#xff1a; 抽象类的抽象方法 动物类Animal package 期末复习;public abstract class Animal {private String name;private int age;//1.空构造public Animal(){}public Animal(String name,int age){this.ageage;this.namename;}public String getNa…

【Java毕业设计】基于JavaWeb的服务出租系统

本科毕业设计论文 题目&#xff1a;房屋交易平台设计与实现 系 别&#xff1a; XX系&#xff08;全称&#xff09; 专 业&#xff1a; 软件工程 班 级&#xff1a; 软件工程15201 学生姓名&#xff1a; 学生学号&#xff1a; 指导教师&#xff1a; 导师1 导师2 文章目录 摘…

C++入门 vector部分模拟实现

目录 vector大致框架 vector常见接口模拟实现 begin迭代器 & end迭代器 capacity( ) & size( ) reserve operator[ ] push_back( ) & pop_back( ) sort vector大致框架 vector的内部的成员变量大概有三部分构成&#xff1a; namespace bit {template<c…

java中的日志

springboot自带slf4j框架和logback&#xff0c;我们可以移除spring的logging&#xff0c;然后再带入自己的日志框架。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusio…

Linux中tar压缩与解压缩

TAR是Unix/Linux中常用的归档工具&#xff0c;它可以对文件或目录进行打包但不压缩&#xff0c;或者配合其他工具进行压缩。 压缩文件或目录 以下是一些基本的tar压缩命令&#xff1a; 1.压缩单个文件&#xff1a; tar -cvf archive.tar file1 2.压缩多个文件&#xff1a; t…

毕业季带给我的五个启示

每到毕业季&#xff0c;校园里总是充满了复杂的情绪。有人欢笑&#xff0c;有人落泪。同样的四年大学生活&#xff0c;为何结局如此不同&#xff1f;本文将从多个角度探讨如何实现综合改变&#xff0c;解释在交友、机会和心态上的关键因素&#xff0c;揭示“慢就是快”的真理。…

Vulnhub--OS-HACKNOS-2.1

渗透复现 目标站点为wordpress&#xff0c;通过wpscan进行漏洞扫描发现漏洞插件 通过漏洞插件存在的目录穿越漏洞成功读取/etc/passwd文件中flag用户的密码 SSH登录flag用户后在备份文件中找到rohit用户的密码 切换rohit用户&#xff0c;rohit用户能够以root权限执行任何文…

colima配置docker镜像源

只在 colima ssh 环境下修改 docker 配置文件是无效的&#xff0c;我们需要修改 colima 配置文件才能使 docker 镜像源生效。 此时你需要进入到~/.colima/default目录下编辑colima.yaml文件。该文件是 colima 的配置文件。内容如下图所示&#xff0c;我这里配置了许多家的镜像源…

手写方法实现整型例如:123与字符串例如:“123“相互转化(下篇)

目录 一、前言 二、整型转化为字符串 1. 初始化变量 2.数字1转字符1 3.取出value中的每一项数字 4.将字符放入字符数组中 5.最终代码 三、最后 一、前言 本篇文章紧跟上篇文章&#xff0c;本片内容为整型转化为字符串类型。至于我为什么要分两篇文章&#xff0c;主要…

【2024最新精简版】Kafka面试篇

文章目录 Kafka和RabbitMQ什么区别讲一讲Kafka架构你们项目中哪里用到了Kafka?为什么会选择使用Kafka? 有什么好处 ?使用Kafka如何保证消息不丢失 ?消息的重复消费问题如何解决的 ?Kafka如何保证消费的顺序性 ?Kafka的高可用机制有了解过嘛 ?Kafka实现高性能的设计有了解…

大数据的发展,带动电子商务产业链,促进了社会的进步【电商数据采集API接口推动电商项目的源动力】

最近几年计算机技术在诸多领域得到了有效的应用&#xff0c;同时在多方面深刻影响着我国经济水平的发展。除此之外&#xff0c;人民群众的日常生活水平也受大数据技术的影响。 在这其中电子商务领域也在大数据技术的支持下&#xff0c;得到了明显的进步。虽然电子商务领域的发…

华为数通题库HCIP-821——最新最全(带答案解析)

单选11、某台路由器运行IS—IS,其输出信息如图所示&#xff0c;下列说法错误的是? A、邻居路由器的System-ID为0002.0200.2002 B、本路由器是DIS C、本路由器的区域号为49.0001 D、本路由器System-ID为0100.0000.1001 解析&#xff1a;根据输出信…