解方程

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. Windows系统自带的DOS窗口

    写在前面: 整理自网络 记录学习过程,方便复习 说明 DOS全称为Disk Operating System,意思是"磁盘操作系统" DOS是个人计算机上的一类操作系统,windo ...

  2. Codeforces Round #529 (Div. 3) D. Circular Dance (思维)

    题意:有\(n\)个熊小孩,绕着树转圈圈,编号\(i\)的小孩可以记住\(a_{i,1}\)和\(a_{i,2}\)两个小孩,这两个小孩是顺时针相邻的,但谁前谁后不一定.现在给你每个小孩的\(a_{i ...

  3. 洛谷 P1135 奇怪的电梯 (DFS)

    题意:有一\(n\)层高的大楼,每层楼都只能在合法情况下上\(x\)层或者下\(x\)层,问你是否能从\(a\)层楼坐电梯到\(b\)层楼,输出最小步数. 题解:直接dfs搜,\(flo\)表示层数, ...

  4. KVM Pass-through 上部署 MiniSMB HurricaneII

    KVM Pass-through 上部署 MiniSMB HurricaneII 免费网络测试,是一款专门用于测试无线控制器, 智能路由器,网络交换机的性能和稳定性的软硬件相结合的工具.可以通过此工具 ...

  5. 鸟哥的linux私房菜——第十二章学习(Shell Scripts)

    第十二章  Shell Scripts 1.0).什么是shell scripts? script 是"脚本.剧本"的意思.整句话是说, shell script 是针对 shel ...

  6. HDU 4336 Card Collector(状压 + 概率DP 期望)题解

    题意:每包干脆面可能开出卡或者什么都没有,一共n种卡,每种卡每包爆率pi,问收齐n种卡的期望 思路:期望求解公式为:$E(x) = \sum_{i=1}^{k}pi * xi + (1 - \sum_ ...

  7. 链接脚本再探和VMA与LMA

    链接脚本简单描述 连接脚本的描述都是以节(section)的单位的,网上也有很多描述链接脚本语法的好文章,再不济还有官方的说明文档可以用来学习,其实主要就是对编译构建的整个过程有了深入的理解后就能对链 ...

  8. 后Low Code时代:聚焦和突破

    很多人都不想被贴上标签,我曾经也一样.觉得青春不能被定义,人也不能被分类.但随着学习和工作的变迁,慢慢开始发现标签也是一种名片效应. 比如一个做汽车销售的朋友,他就对BMW的车型非常熟悉,可以说是懂车 ...

  9. 如何在github实现 github pages (暨个人blog) websites for you and your projects.

    http://xgqfrms.github.io/xgqfrms/ 步骤如下: 1.GitHub Pages https://pages.github.com/ 2.Generate a site, ...

  10. learning 2018

    learning 2018 https://scotch.io/courses https://laod.cn/hosts/ipv6-dns.html xgqfrms 2012-2020 www.cn ...