488 - Triangle Wave

题意:
根据输入画出三角波型, 第一行读入的是 case 数; 每个 case 包含两行, 第一行是三角形的振幅/高度, 第二行是三角形重复的次数.
不同输入 case 之间使用空行进行分隔. 输出的波形也需使用空行进行分隔.

思路:
读入 amplitude 和 frequency 后, 逐个三角形进行输出, 输出 frequency 次. 注意三角形包含上三角和下三角.

要点:
1. 使用 getline() 逐行读入.
2. 使用 atoi 转 string 为 int.
3. 最后一个 case 的最后一个波型, 不能再输出空行进行分隔, 否则会报 wrong answer.

题目:
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=94&page=show_problem&problem=429

代码:

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


int main(int argc, char const *argv[])
{
	#ifndef ONLINE_JUDGE
		freopen ("488_i.txt", "r", stdin);  
		freopen ("488_o.txt", "w", stdout); 
	#endif

	string caseNum;		
	getline(cin, caseNum);
	int n = atoi(caseNum.c_str());
	 
	string blank;
	getline(cin, blank);		// 读取空行

	string amplitude;		// 振幅/高度
	string frequency;		// 重复次数

	for(int m=0; m<n; m++){
		getline(cin, amplitude);
		getline(cin, frequency)	;
		getline(cin, blank);	// 读取空行

		int a = atoi(amplitude.c_str());
		int f = atoi(frequency.c_str());

		for(int i=0; i<f; i++){
			// 上三角
			for(int j=1; j<=a; j++){
				for(int k=1; k<=j; k++){
					cout << j;
				}
				cout << endl;
			}

			// 下三角
			for(int j=a-1; j>0; j--){
				for(int k=j; k>0; k--){
					cout << j;
				}
				cout << endl;
			}

			// 保证最后不会输出一个空行
			if(i != f-1 || m != n-1){
				cout << endl;
			}
		}
	}

	return 0;
}

环境:C++ 4.5.3 - GNU C++ Compiler with options: -lm -lcrypt -O2 -pipe -DONLINE_JUDGE

转载于:https://my.oschina.net/zenglingfan/blog/137789

### 如何在 Simulink 中生成或处理 Triangle Wave #### 使用内置函数生成三角波 为了创建一个三角波,在 MATLAB 或者 Simulink 的环境中可以采用多种方法。一种简单的方式是在命令行输入 `sawtooth` 函数并调整其参数来获得期望的结果。对于特定需求,比如想要得到周期为 T 并且幅度范围限定于 [-1, 1] 的锯齿波,则可以通过设置合适的频率 f 和相移 phi 来实现;而如果目标是构建具有相同上升时间和下降时间特性的标准三角波而非锯齿波的话,那么就需要进一步修改该函数的行为模式[^1]。 ```matlab t = linspace(0, 2*pi, 1e3); tri_wave = sawtooth(t, 0.5); % duty cycle set to 0.5 for symmetric triangular waveform plot(t, tri_wave) xlabel('Time') ylabel('Amplitude') title('Triangular Wave Generated by Sawtooth Function') grid on; ``` #### 利用 Sine Wave Block 构建三角波发生器 另一种常见的做法就是通过组合多个基础组件来自定义设计所需的信号源。例如,基于正弦波振荡器原理,配合积分运算环节以及适当的限幅措施之后同样能够有效地合成出理想的三角波形。具体来说,先建立一个常规的正弦波模块(Sine Wave),将其输出连接至积分器之前加入绝对值计算节点以消除负半周部分的影响,最后再经由饱和元件设定上下界限即可完成整个电路搭建过程[^2]。 ```matlab % 定义Sine Wave Block参数 sine_wave_block = simulink.sources.SineWave; sine_wave_block.Amplitude = 1; % 归一化幅值 sine_wave_block.Frequency = 50; % 单位:Hz sine_wave_block.Phase = 0; % 单位:度 ``` #### Scope 显示与分析工具的应用 当涉及到实际项目开发过程中,往往还需要借助一些辅助手段来进行调试验证工作。此时便可以用到 Scope 组件所提供的强大可视化功能——不仅支持实时观测多路数据流变化趋势图样,而且允许用户自定义坐标轴刻度、颜色样式等外观属性以便更直观地区分不同类型的物理量关系。特别是在观察 SPWM 控制策略下的电力电子变换装置运行状态时尤为有用,因为这里会频繁涉及诸如正弦参考指令、三角调制载频及其对应的开关动作响应等一系列复杂动态特性表现形式[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值