你好,复变函数2.0

news2024/12/23 9:57:45

 

 第一行: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();
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于MATLAB仿真LFM线性调频信号

基于MATLAB仿真LFM线性调频信号 目录 前言 一、LFM信号简介 二、LFM信号基本原理 三、LFM信号仿真 四、代码 总结 前言 仿真中的接收信号&#xff0c;有时为了简单会直接用一个正弦波代替&#xff0c;但实际中接收到的信号极少是点频信号&#xff0c;一般都是PSK信号、OF…

Zigbee协议详解:低功耗无线通信的理想选择

什么是Zigbee协议 Zigbee是一种基于IEEE 802.15.4标准的无线通信协议&#xff0c;专为低功耗、低数据速率和短距离通信设计。它广泛应用于物联网&#xff08;IoT&#xff09;设备&#xff0c;如智能家居、工业自动化和健康监测等领域。Zigbee协议由Zigbee联盟维护和推广&#x…

国企:2024年6月中国移动相关招聘信息

中国移动研究院: AI中心-大模型数据工程师 工作地点:北京市、西安市2 发布时间 :2024-06-18 学历要求:硕士研究生及以上 招聘人数:招聘若干人 专业要求 计算机、人工智能、软件工程、数学等相关专业 工作职责 1、负责处理和清洗大规模、多来源的数据集,保证数…

yum的概念、相关命令、ftp http部署步骤;NFS共享文件操作步骤

目录 yum 配置文件 缓存功能操作步骤 创建并配置本地仓库文件 yum相关命令 yum install __ yum repolist yum list __ yum info __ yum search __ yum whatprovides __ yum remove __ yum -y update __ yum history yum grouplist yum groupinstall "__&q…

【Netty】nio阻塞非阻塞Selector

阻塞VS非阻塞 阻塞 阻塞模式下&#xff0c;相关方法都会导致线程暂停。 ServerSocketChannel.accept() 会在没有建立连接的时候让线程暂停 SocketChannel.read()会在没有数据的时候让线程暂停。 阻塞的表现就是线程暂停了&#xff0c;暂停期间不会占用CPU&#xff0c;但线程…

DAY03 HTML

文章目录 一 表格1. 表格的语法2. 表格的可选标记3. 不规则的单元格&#xff08;合并单元格&#xff09;4. 表格的属性5. 表格的大小 二 列表1. 有序列表2. 无序列表3. 属性4. 列表的嵌套5. 定义列表【了解】 三 表单(重点)1. 表单的语法2. 表单的控件分类3. input元素4. selec…

jQuery 基本操作

01-简介 jQuery 是一个功能丰富且广泛使用的 JavaScript 库&#xff0c;它简化了 HTML 文档遍历和操作、事件处理、动画和 Ajax 操作。jQuery 通过其易用的 API&#xff0c;使复杂的 JavaScript 编程任务变得更加简单&#xff0c;并且兼容各种浏览器。 1、jQuery特点 简化 DOM …

数据库设计概述-数据库设计内容、数据库设计方法(基于E-R模型的规范设计方法)

一、引言 如何利用关系数据库理论设计一个满足应用系统需求的数据库 二、数据库设计内容 1、数据库设计是基于应用系统需求分析中对数据的需求&#xff0c;解决数据的抽象、数据的表达和数据的存储结构等问题 2、其目标是设计出一个满足应用要求、简洁、高效、规范合理的数…

Python基础教程(三十):math模块

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] LYA的巡演(100分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

Stm32超声波测距实验

一.任务需求 1. 采用stm32F103和HC-SR04超声波模块&#xff0c; 使用标准库或HAL库 定时器中断&#xff0c;完成1或2路的超声波障碍物测距功能。 2. 当前智能汽车上一般配置有12路超声波雷达&#xff0c;这些专用超声波雷达内置了MCU&#xff0c;直接输出数字化的测距结果&am…

分类判决界面---W-H、H-K算法

本篇文章是博主在人工智能等领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅解。文章分类在AI学习笔记&#…

文件管理—linux(基础IO)

目录 ​编辑 一、C语言文件接口&#xff08;库函数&#xff09; hello.c写文件 hello.c读文件 输出信息到显示器 stdin & stdout & stderr 二、系统文件I/O&#xff08;系统调用&#xff09; hello.c 写文件&#xff1a; hello.c读文件 接口介绍 open open…

基于Java学生选课管理系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…

STM32多种开发环境及生成hex及bin文件介绍

一.STM32开发环境 KEIL系列 &#xff08;1&#xff09;KEIL公司目前有四款独立的嵌入式软件开发工具&#xff0c;即MDK、KEIL C51、KEIL C166、KEIL C251&#xff0c;它们都是KEIL公司品牌下的产品&#xff0c;都基于uVision集成开发环境&#xff0c;其中MDK是RealView系列中…

从零对Transformer的理解(台大李宏毅)

Self-attention layer自注意力 对比与传统cnn和rnn&#xff0c;都是需要t-1时刻的状态然后得到t时刻的状态。我不知道这样理解对不对&#xff0c;反正从代码上看我是这么认为的。而transformer的子注意力机制是在同一时刻产生。意思就是输入一个时间序列&#xff0c;在计算完权…

内存马的错误参数获取,导致原有接口失效解决方案

内存马的错误参数获取&#xff0c;导致接口失效。 前言 java Listener 类型内存马&#xff0c;在使用request.getParameter(String name); 获取请求参数去判断是否是恶意请求的时候&#xff0c;会影响某些框架无法接收到参数。 例子 在Jersey 框架 使用 MultivaluedMap 去接…

MSPM0G3507——创建新的.c.h文件

在项目处点击右键&#xff0c;再点击New File 再命名.c.h即可

mysql中的datetime类型在Java中到底对应哪个时间类型?

因为MySQL中用的是datetime类型&#xff08;年月日 时分秒&#xff09; java.sql.Date 在Java中用 java.sql.Date 接收 但是得到的却只有年月日 前端接收到的是时间戳 java.time.LocalDateTime 在Java中使用 java.time.LocalDateTime 接收 得到的是带时区的时间 前端接收到的…

红队内网攻防渗透:内网渗透之内网对抗:横向移动篇入口差异切换上线IPC管道ATSC任务Impacket套件UI插件

红队内网攻防渗透 1. 内网横向移动1.1 横向移动入口知识点1.1.1、当前被控机处于域内还是域外1.1.1.1 在域内1.1.1.2 不在域内1.1.1.2.1 第一种方法提权到system权限1.1.1.2.2 第二种方法切换用户上线1.1.1.2.3 kerbrute枚举用户1.1.2、当前凭据为明文密码还是HASH1.2 横向移动…