Rust 编程 - if-else条件控制(以解一元二次方程组为例)

知识点

if-else 控制结构

if 条件控制

if条件控制

if 条件表达式{
	//条件成立执行这里的代码
}

if-else 条件控制

在这里插入图片描述

if 条件表达式{
	//条件成立执行这里的代码
}else{
	//条件不成立执行这里的代码
}
if 条件表达式1{
	//条件1成立执行这里的代码
}else if 条件表达式2{
	//条件1不成立,条件2成立执行这里的代码
}else{
	//条件2不成立执行这里的代码
}

一元二次方程组

一元二次方程的一般形式为:

a x 2 + b x + c = 0 ax^2 + bx + c = 0 ax2+bx+c=0

在方程中,abc 是常数,其中 a ≠ 0 a\neq0 a=0。一元二次方程的解可以通过使用求根公式得到:

x = − b ± b 2 − 4 a c 2 a x = \frac{-b \pm \sqrt{b^2-4ac}}{2a} x=2ab±b24ac

一元二次方程组通常形式如下:

a x 2 + b x + c = 0 d x 2 + e x + f = 0 \begin{align*} ax^2 + bx + c &= 0 \\ dx^2 + ex + f &= 0 \end{align*} ax2+bx+cdx2+ex+f=0=0

其中,a, b, c, d, e, f 是已知的常数。

这个方程组的解是满足两个方程的x 值。解的个数和类型取决于二次方程的判别式(在求根公式中的 b 2 − 4 a c \sqrt{b^2-4ac} b24ac 部分的值。判别式的三种可能情况如下:

  1. 如果判别式大于 0,方程有两个不相等的实数解。
  2. 如果判别式等于 0,方程有两个相等的实数解,也就是有一个重根。
  3. 如果判别式小于 0,方程有两个共轭的复数解。

Rust 编程

程序代码与注释

use std::io::{self, *};

fn main() {
    let stdin = io::stdin();
    for line in stdin.lock().lines() {
        let ll = line.unwrap();
        let numbers: Vec<&str> = ll.split(" ").collect();
        if numbers.len() != 3 {
            println!("请输入二元一次方程组的三个参数!");
            continue;
        }
        let a = numbers[0].trim().parse::<f64>().unwrap_or(0.0);
        let b = numbers[1].trim().parse::<f64>().unwrap_or(0.0);
        let c = numbers[2].trim().parse::<f64>().unwrap_or(0.0);
        cal_quadratic_equation(a, b, c);
    }
}

/// # 功能
/// 计算一元二次方程组并打印结果
/// # 参数
/// * `a` - 平方项系数
/// * `b` - 一次方项系数
/// * `c` - 常数项
/// # 示例
/// 解二元一次方程 2x^2 + 7x + 1 = 0,
/// 预期结果为`x1=-3.35;x2=-0.15`
/// ```
/// cal_quadratic_equation(2.0, 7.0, 1.0);
/// ```
/// # 备注
/// * 打印精度为小数点后两位
/// * 当方程没有实数解时会打印虚数解(实部+虚部)
fn cal_quadratic_equation(a: f64, b: f64, c: f64) {
    let delta: f64 = b * b - 4.0 * a * c; //判别式
    if a == 0.0 {
        println!("Not quadratic equation");
    } else {
        if delta == 0.0 {
            println!("x1=x2={:.2}", -b / (2.0 * a));
        } else if delta > 0.0 {
            println!(
                "x1={:.2};x2={:.2}",
                (-b - delta.sqrt()) / (2.0 * a),
                (-b + delta.sqrt()) / (2.0 * a)
            );
        } else if delta < 0.0 {
            let real_quantity = -b / (2.0 * a); //实部
            let imaginary_quantity = (-delta).sqrt() / (2.0 * a); //虚部
            println!(
                "x1={:.2}-{:.2}i;x2={:.2}+{:.2}i",
                real_quantity, imaginary_quantity, real_quantity, imaginary_quantity
            );
        }
    }
}

运行结果

运行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值