解方程

github项目地址

这两天得知初二的表妹学了一元二次方程,听说还不会解,我就想着试试用C语言编写解方程。

一元二次方程

用公式法

这种方法效果很好:

#include"funct.h"
void yyec1()
{
double a, b, c;
double x = MIN, y;
cout << "-----------" << endl;
cout << "对于ax^2+bx+c=0" << endl;
cout << "依降次输入各项系数 a,b,c" << endl;
cout << "-----------" << endl;
cin >> a >> b >> c;
x = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
y = (-b - sqrt(b * b - 4 * a * c)) / (2 * a);
cout << "-----------" << endl;
cout << "x1="<<x << endl <<"x2="<< y << endl;
}

用试错法

这种好像不是太好:

#include"funct.h"
void yyec2()
{
double a, b, c;
double x = MIN, y;
cout << "-----------" << endl;
cout << "对于ax^2+bx+c=0" << endl;
cout << "依降次输入各项系数 a,b,c" << endl;
cout << "-----------" << endl;
cin >> a >> b >> c;
for (;; x++)
{
y = x / 10;
if (a * y * y + b * y + c == 0)
{
cout << "-----------" << endl;
cout << "x=" << y << endl;
// break;
}
}
}

一元三次方程

#include"funct.h"
void yysc()
{
double a, b, c, d;
double x = MIN, y;
cout << "-----------" << endl;
cout << "对于ax^3+bx^2+cx+d=0" << endl;
cout << "依降次输入各项系数 a,b,c,d" << endl;
cout << "-----------" << endl;
cin >> a >> b >> c >> d;
for (;; x++)
{
y = x / 10;
if (a * y * y * y + b * y * y + c * y + d == 0)
{
cout << "-----------" << endl;
cout << "x=" << y << endl;
break;
}
}
}

这个就和二次很像,不做多研究。

二元一次

公式法

#include"funct.h"
void eyyc1()
{
double a, b, c, d, e, f, x, y;
cout << "-----------" << endl;
cout << "对于方程组:" << endl;
cout << "1. ax+by=c " << endl;
cout << "1. dx+ey=f " << endl;
cout << "依次输入a,b,c,d,e,f:" << endl;
cout << "-----------" << endl;
cin >> a >> b >> c >> d >> e >> f;
y = (c * d - a * f) / (b * d - a * e);
x = (b * f - c * e) / (b * d - a * e);
cout << "-----------" << endl;
cout << "y=" << y << endl;
cout << "x=" << x << endl;
}

公式法的错误确实少点,但这似乎不像计算机。

试错法

//此方法不好
#include"funct.h"
void eyyc2()
{
double a, b, c, d, e, f;
cout << "-----------" << endl;
cout << "对于方程组:" << endl;
cout << "1. ax+by=c " << endl;
cout << "1. dx+ey=f " << endl;
cout << "依次输入a,b,c,d,e,f:" << endl;
cout << "-----------" << endl;
cin >> a >> b >> c >> d >> e >> f;
double x = MIN, y = MIN, xx, yy;
if(d!=0){
for (;; y++)
{
yy = y / 100;
// cout<<yy<<endl;
if (yy*b*d-a*e*yy==c*d-a*f)
{
cout << "-----------" << endl;
cout << "y=" << yy << endl;
cout << "x=" << (f-e*yy)/d << endl;
break;
}
// else cout<<"0";
}}
else {
for (;; y++)
{
yy = y / 100;
// cout<<yy<<endl;
if (yy*e==f)
{
cout << "y=" << yy << endl;
cout << "x=" << (c-b*yy)/a << endl;
break;
}
// else cout<<"0";
} } }

主函数

#include"funct.h"
int main()
{ while (1)
{
cout << "-----------" << endl;
cout << "1.一元二次" << endl;
cout << "2.一元三次" << endl;
cout << "3.二元一次" << endl;
cout << "-----------" << endl;
int se;
cin >> se;
switch(se)
{
case 1:
yyec1();
//yyec2();
break;
case 2:
yysc();
break;
case 3:
eyyc1();
//eyyc2();
break;
default:cout << "what are you inputting?" << endl; break;
}
}
return 0;
}

头文件

#include<iostream>
#include <cmath>
#define MIN -100
using namespace std;
void yyec1();
void yyec2();
void yysc();
void eyyc1();
void eyyc2();

用c++解一元二次方程的更多相关文章

  1. java练习题:解一元二次方程、判断闰年、判断标准身材、三个数取最大值

    1.解一元二次方程 注:求根公式为(-b+根号德尔塔)/2a,(-b-根号德尔塔)/2a Scanner sc=new Scanner(System.in); System.out.println(& ...

  2. C语言写解一元二次方程程序心得

    前言:在网上看到不少解一元二次方程的小程序,在使用时总得出一大堆小数,感觉很不爽,遂自己重新写了一遍. 首先,先回忆一下一元二次方程的求根公式: 分别读取二次项.一次项和常数项系数并且求出delta ...

  3. 【Java例题】2.8 解一元二次方程

    8.解一元二次方程. 输入一元二次方程的a,b,c三个系数,解一元二次方程 ax^2+bx+c=0,输出两个根 package study; import java.util.Scanner; pub ...

  4. c语言解一元二次方程

    C语言解一元二次方程,输入系数a,b,c; #include <stdio.h> #include <math.h> int main(int argc, char *argv ...

  5. if语句解一元二次方程~

    #include<stdio.h>#include<math.h> void main(){  double a,b,c,x1,x2;  printf("请输入a&q ...

  6. 解一元二次方程的C++实现

    一元二次方程的根的情况分为实根与虚根两种,代码如下 #include<iostream> #include<cmath> using namespace std; float ...

  7. 利用离散 Fourier 变换解一元二次方程

    设二次方程$$x^2+bx+c=0$$的两个根分别为 $x_1,x_2$.则$$(x-x_1)(x-x_2)=x^2+bx+c.$$因此$$\begin{cases}  x_1+x_2=-b\\x_1 ...

  8. if else练习 (解一元二次方程)

    public class cccc { /** * @param args */ public static void main(String[] args) { int a=10,b=11,c=12 ...

  9. HDU 2298(纯物理加解一元二次方程)

    Toxophily Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

随机推荐

  1. Network POJ - 3694 无向图找桥

    题意: 给你一个无向图,你需要找出来其中有几个桥 桥: 1.存在重边必定不为桥 2.low[v]>dfn[u] 代码: //题意很清晰 //就是这个需要先找出来原无向图中的桥个数,然后在判断添加 ...

  2. Docker的OverlayFS存储驱动

    OverlayFS存储驱动 OverlayFS是一个现代的Union Filesystem,类似于AUFS,但速度更快,实现更简单.Docker为OverlayFS提供了两个存储驱动程序:overla ...

  3. Shell 函数 & 数组

    Shell 函数 函数介绍 # 什么是函数? 具备某一功能的工具 => 函数 事先准备工具的过程 => 函数的定义 遇到应用场景拿来就用 => 函数的调用 # 为何要用函数? 没有引 ...

  4. 数据库之ODPS中sql语句指南

    此篇博文为本人在实际工作中应用总结,转载请注明出处. 持续更新中 一.增 1.增加一列(向csp_hsy_count_info表中增加sale_qty列) ALTER TABLE csp_hsy_co ...

  5. Android 神奇的SpannableStringBuilder

    一 无图言屌 先看看神奇的效果 仅用一个TextView实现 二 SpannableStringBuilder Google官方介绍 This is the class for text whose ...

  6. AirPods Max 出厂激活是怎么回事

    AirPods Max 出厂激活是怎么回事 话说出厂激活是怎么检测出来的 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问! 原创文 ...

  7. config file language All In One

    config file language All In One YAML YAML Ain't Markup Language .yaml / .yml https://yaml.org/ https ...

  8. js console.log color all in one

    js console.log color all in one console.log color Chrome console.log 语法 / grammar %c, %s, css style ...

  9. mongodb & vue & node.js

    mongodb mongodb & vue & node.js https://docs.mongodb.com/manual/tutorial/install-mongodb-on- ...

  10. LeetCode & tree & binary tree

    LeetCode & tree & binary tree 树 & 二叉树 refs https://leetcode.com/problemset/all/?topicSlu ...