CH 0801

输入四个整数a, b, c, d,表示两个分数a/b和c/d。要求输出最简分数以及两个分数相等和大小的比较结果。
样例输入
1 7 26 25
样例输出
zrf is:1/7; ssh is:26/25
(zrf==ssh) is:0; (zrf<ssh) is:1


import java.util.Scanner;

public class algo_155 {
	
	static long gcd(long m,long n){
		long temp;
		while(n>0){
			temp = m%n;
			m=n;
			n=temp;
		}
		return m;
	}
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long a = sc.nextLong();
		long b = sc.nextLong();
		long c = sc.nextLong();
		long d = sc.nextLong();
		
		 a = a/gcd(a,b);
		 b = b/gcd(a,b);
		 c = c/gcd(c,d);
		 d = d/gcd(c,d);
		 
		 int flag1=1,flag2=0;
		 if(a!=c)
			 flag1=0;
		 if(a*d<b*c)
			 flag2=1;
			 
		 System.out.println("zrf is:"+a+"/"+b+"; ssh is:"+c+"/"+d);
		 System.out.println("(zrf==ssh) is:"+flag1+"; (zrf<ssh) is:"+flag2);
	}
}


void Compute_Voltage(void) { uint8 i,j; float temp_rms[3] = {0.0,0.0,0.0}; int16 v_k[3]; uint8 saved_ea = EA; EA = 0; for (i = 0; i < 3; i++) { v_k[i] = base_info.V_K[i]; } EA = saved_ea; for(j=0; j<3; j++) { for(i=0; i<sample_num; i++) { temp_ad_val[i] = adc_val[j][i]; } ad_average[j] = Average_Precess(&temp_ad_val,sample_num); temp_rms[j] = RMS_Process(&temp_ad_val,sample_num,ad_average[j]); //memset(temp_ad_val,0,100*sizeof(uint16)); if(fabs(temp_rms[j] - ad_rms[j]) <= 50.0f) { ad_rms[j] = 0.02f*temp_rms[j] + 0.98f*ad_rms[j]; } else { ad_rms[j] = temp_rms[j]; } } //*******************************************// //***********这里预留一个量程****************// //*******************************************// // 改进后的Compute_Voltage滤波部分 for(i=0; i<3; i++) { temp_voltage[i] = (float)(ad_rms[i]*1000.0f/v_k[i]); if(calibration_lock[i]) { // 校准锁定模式下,在±2V范围内保持锁定 if(fabs(temp_voltage[i] - modbus_rx_data) < 5.0f) { Voltage[i] = modbus_rx_data; } } else { if(temp_voltage[i] <=30.0f) //小于2V清零 Voltage[i] = 0.0f; else { if(((temp_voltage[i] - Voltage[i]) > -150.0f) && ((temp_voltage[i] - Voltage[i]) < 150.0f)) //5.0以内加权 { Voltage[i] = (temp_voltage[i]*0.02f + Voltage[i]*0.98f); } else { Voltage[i] = temp_voltage[i]; } } } } } void Input_Calibration(uint8 ch) //电压校准函数 ch代表路数 { float temp_k; float allow_max = 0.0; float allow_min = 0.0; EA = 0; if(ch<0 || ch >2) { Return_error_flag = 1; calibration_lock[ch] = 0; // 校准失败时解除锁定 return; } // 防止除零异常值 if(Voltage[ch] < 1.0f) // 电压值太小不校准 { Return_error_flag = 1; return; } if(modbus_rx_data < 500 )//|| modbus_rx_data > 50000 return; temp_k = (Voltage[ch]/((float)1.0f*modbus_rx_data))*base_info.V_K[ch]; if((temp_k >= check_parameter_rang[ch+9][0]) || (temp_k <= check_parameter_rang[ch+9][2])) { base_info.V_K[ch] = (int16)temp_k; } else { Return_error_flag = 1; } // 校准成功后立即锁定目标值 if(Return_error_flag == 0) { Voltage[ch] = modbus_rx_data; // 直接赋校准值 calibration_lock[ch] = 1; // 设置锁定标志 } else { calibration_lock[ch] = 0; // 校准失败时解除锁定 } EA = 1; }校准500v时,校准后重新上电值会在496-503之间变动怎么改
最新发布
08-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值