一元二次方程式を解析する方法を書く.
8921 ワード
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _ _
{
class Program
{
public static int jiefangcheng(int a, int b, int c,out double x1,out double x2)
{
int jieguo = 0; x1 = 0; x2 = 0;
if (a == 0)
{
jieguo = -1;
}
else
{
int dert = b * b - 4 * a * c;
if (dert < 0)
{
jieguo = 0;
}
else
{
if (dert > 0)
{
jieguo =2;
x1 = (-b + Math.Sqrt(dert)) / (2 * a);
x2 = (-b - Math.Sqrt(dert)) / (2 * a);
}
else
{
jieguo = 1;
x1 = x2 = -b / (2 * a);
}
}
}
return jieguo;
}
static void Main(string[] args)
{
while (true)
{
Console.WriteLine(" a :");
int a = int.Parse(Console.ReadLine());
Console.WriteLine(" b :");
int b = int.Parse(Console.ReadLine());
Console.WriteLine(" c :");
int c = int.Parse(Console.ReadLine());
double x1, x2;
int jieguo = jiefangcheng(a, b, c, out x1, out x2);
if (jieguo == -1)
{
Console.WriteLine(" ");
}
else if (jieguo == 0)
{
Console.WriteLine(" ");
}
else if (jieguo == 1)
{
Console.WriteLine(" x1={0},x2={1}", x1, x2);
}
else
{
Console.WriteLine(" x1={0},x2={1}", x1, x2);
}
}
Console.ReadLine();
}
}
}
if構造の代わりにswitch
switch (jieguo)
{
case -1: Console.WriteLine(" ");
break;
case 0: Console.WriteLine(" ");
break;
case 1: Console.WriteLine(" , x1=x2={0}",x1);
break;
case 2: Console.WriteLine(" , x1={0},x2={1}",x1,x2);
break;
}