C# C语言中的虚数#

C# C语言中的虚数#,c#,math,console,C#,Math,Console,我正在尝试制作一个简单的基于控制台的程序,可以解决二次方程。如果判别式是负数,我仍然不知道如何计算答案,所以我只是显示了一条消息作为占位符。有人能解释一下怎么做吗?我会发布整个计划,征求任何建议。 谢谢 正常工作的代码(谢谢Gunther Fox): if(判别式

我正在尝试制作一个简单的基于控制台的程序,可以解决二次方程。如果判别式是负数,我仍然不知道如何计算答案,所以我只是显示了一条消息作为占位符。有人能解释一下怎么做吗?我会发布整个计划,征求任何建议。 谢谢

正常工作的代码(谢谢Gunther Fox):

if(判别式<0)
{
双x1=-b/(2*a);
判别式=-判别式;
双x2=数学Sqrt(判别式)/(2*a);
double x3=-Math.Sqrt(判别式)/(2*a);
Console.WriteLine(x1.ToString()+“+”+x2.ToString()+“*i”);
Console.WriteLine(x1.ToString()+“+”+x3.ToString()+“*i”);
Console.ReadLine();
}
旧代码:

class Program
{
    static void Main(string[] args)
    {
        int choice;
        double ans1;
        double ans2;

        Console.WriteLine("~~~~~~~~ TERMINAL CALCULATOR ~~~~~~~~");

        Console.WriteLine("1. Standard Calculator\n2. Quadratic Equation Solver\n3. Simple Interest Calculator");
        choice = int.Parse(Console.ReadLine());

        try
        {
            if (choice == 2)
            {
                Console.Write("Enter a value for 'a': ");
                double a = double.Parse(Console.ReadLine());

                Console.Write("Enter a value for 'b': ");
                double b = double.Parse(Console.ReadLine());

                Console.Write("Enter a value for 'c': ");
                double c = double.Parse(Console.ReadLine());

                //Quadratic Formula: x = (-b +- sqrt(b^2 - 4ac)) / 2a

                //Solve disriminant: (b*b) - (4*a*c)
                double discriminant = (b * b) - (4 * a * c);

                if (discriminant < 0)
                {
                    Console.WriteLine("No real solutions");
                    Console.ReadLine();
                }
                else
                {
                    double sqrt = Math.Sqrt(discriminant);
                    ans1 = (-b + sqrt) / (2 * a);
                    ans2 = (-b - sqrt) / (2 * a);
                    Console.WriteLine("{" + ans1 + " , " + ans2 + "}");
                    Console.ReadLine();
                }
            }

            if (choice == 1)
            {
                Console.Write("Enter first number: ");
                double num1 = double.Parse(Console.ReadLine());

                Console.Write("Enter second number (Enter 0 if you want to use sqrt): ");
                double num2 = double.Parse(Console.ReadLine());

                //Prompt user to choose an operation
                Console.WriteLine("Choose a math operator:\n1. +\n2. -\n3. x\n4. /\n5. ^\n6. Square root");
                int mathOpr = int.Parse(Console.ReadLine());

                if (mathOpr == 1)
                {
                    double answer = num1 + num2;
                    Console.WriteLine("\n\n" + answer);

                    Console.ReadLine();
                }

                if (mathOpr == 2)
                {
                    double answer = num1 - num2;
                    Console.WriteLine("\n\n" + answer);

                    Console.ReadLine();
                }

                if (mathOpr == 3)
                {
                    double answer = num1 * num2;
                    Console.WriteLine("\n\n" + answer);

                    Console.ReadLine();
                }

                if (mathOpr == 4)
                {
                    double answer = num1 / num2;
                    Console.WriteLine("\n\n" + answer);

                    Console.ReadLine();
                }

                if (mathOpr == 5)
                {
                    double answer = Math.Pow(num1, num2);
                    Console.WriteLine("\n\n" + answer);

                    Console.ReadLine();
                }

                if (mathOpr == 6)
                {
                    if (num1 < 0)
                    {
                        Console.WriteLine("\n\nNo real solutions");
                    }

                    else
                    {
                        double answer = Math.Sqrt(num1);
                        Console.WriteLine("\n\n" + answer);
                    }
                }

                else
                {
                    Console.WriteLine("That is not a valid option, idiot.");

                    Console.ReadLine();
                }
            }

            if (choice == 3)
            {
                Console.WriteLine("Enter initial amount: ");
                double initAmount = double.Parse(Console.ReadLine());

                Console.WriteLine("Enter interest rate (ex. 6% = .06): ");
                double rate = double.Parse(Console.ReadLine());

                Console.WriteLine("Enter time range (Year, Month, Week, etc.): ");
                string timeRange = Console.ReadLine();

                Console.WriteLine("Enter amount of " + timeRange.ToLower() + "s: ");
                int time = int.Parse(Console.ReadLine());

                for (int time2 = 1; time2 <= time; time2++)
                {
                    double totalAmount = initAmount * Math.Pow(1 + rate, time2);
                    Console.WriteLine("\n" + timeRange + " " + time2 + " ---------- " + totalAmount);
                }

                Console.ReadLine();
            }
        }
        catch 
        {
            Console.WriteLine("That is not a valid option.");
        }
    }
}
类程序
{
静态void Main(字符串[]参数)
{
智力选择;
双ans1;
双ans2;
Console.WriteLine(“~~~~~~~~~~~~~~~~~终端计算器”~~~~~~~”;
Console.WriteLine(“1.标准计算器\n2.二次方程求解器\n3.单利计算器”);
choice=int.Parse(Console.ReadLine());
尝试
{
如果(选项==2)
{
编写(“为'a'输入一个值:”);
double a=double.Parse(Console.ReadLine());
编写(“为'b'输入一个值:”);
double b=double.Parse(Console.ReadLine());
编写(“为'c'输入一个值:”);
double c=double.Parse(Console.ReadLine());
//二次公式:x=(-b+-sqrt(b^2-4ac))/2a
//解决不一致:(b*b)-(4*a*c)
双判别式=(b*b)-(4*a*c);
if(判别式<0)
{
Console.WriteLine(“没有真正的解决方案”);
Console.ReadLine();
}
其他的
{
双sqrt=数学sqrt(判别式);
ans1=(-b+sqrt)/(2*a);
ans2=(-b-sqrt)/(2*a);
Console.WriteLine(“{”+ans1+”,“+ans2+”}”);
Console.ReadLine();
}
}
如果(选项==1)
{
控制台。写入(“输入第一个数字:”);
double num1=double.Parse(Console.ReadLine());
Console.Write(“输入第二个数字(如果要使用sqrt,请输入0):”;
double num2=double.Parse(Console.ReadLine());
//提示用户选择操作
Console.WriteLine(“选择一个数学运算符:\n1.+\n2.-\n3.x\n4./\n5.^\n6.平方根”);
int mathOpr=int.Parse(Console.ReadLine());
if(mathOpr==1)
{
双答案=num1+num2;
Console.WriteLine(“\n\n”+应答);
Console.ReadLine();
}
if(mathOpr==2)
{
双答案=num1-num2;
Console.WriteLine(“\n\n”+应答);
Console.ReadLine();
}
if(mathOpr==3)
{
双答案=num1*num2;
Console.WriteLine(“\n\n”+应答);
Console.ReadLine();
}
if(mathOpr==4)
{
双答案=num1/num2;
Console.WriteLine(“\n\n”+应答);
Console.ReadLine();
}
if(mathOpr==5)
{
双答案=数学功率(num1,num2);
Console.WriteLine(“\n\n”+应答);
Console.ReadLine();
}
if(mathOpr==6)
{
if(num1<0)
{
Console.WriteLine(“\n\n无实际解决方案”);
}
其他的
{
双答案=数学Sqrt(num1);
Console.WriteLine(“\n\n”+应答);
}
}
其他的
{
WriteLine(“这不是一个有效的选项,白痴。”);
Console.ReadLine();
}
}
如果(选项==3)
{
Console.WriteLine(“输入初始金额:”);
double initAmount=double.Parse(Console.ReadLine());
控制台.WriteLine(“输入利率(6%=0.06):”;
double rate=double.Parse(Console.ReadLine());
Console.WriteLine(“输入时间范围(年、月、周等):”;
string timeRange=Console.ReadLine();
Console.WriteLine(“输入”+timeRange.ToLower()+s:)的数量;
int time=int.Parse(Console.ReadLine());

对于(int-time2=1;time2如果判别式为负数,您可以翻转判别式的符号,进行根计算,然后将i添加到结果的末尾吗?

翻转判别式并乘以i:

double discriminate = (b*b)-(4*a*c);
if(discriminate < 0){
    double x1 = -b/(2*a);
    discriminate = -discriminate ;
    double x2 = Math.Sqrt(discriminate)/(2*a);
    double x3 = -Math.Sqrt(discriminate)/(2*a);
}
Console.WriteLine(x1.ToString() + " + " + x2.ToString() + " * i ");
Console.WriteLine(x1.ToString() + " + " + x3.ToString() + " * i ");
double discrimination=(b*b)-(4*a*c);
if(判别<0){
双x1=-b/(2*a);
歧视=-歧视;
双x2=数学Sqrt(判别)/(2*a);
double x3=-Math.Sqrt(discriminate)/(2*a);
}
Console.WriteLine(x1.ToString()+“+”+x2.ToString()+“*i”);
Console.WriteLine(x1.ToString()+“+”+x3.ToString()+“*i”);

<代码>虚数或系统生成的数字?@ BoCODIGO:虚数。签出这也做了一个谷歌搜索复数,用C ^ StaskOfFuffe,然后你应该考虑改变学校。这就是你的意思:如果(判别< 0){双X1= -B/(2×A);
double discriminate = (b*b)-(4*a*c);
if(discriminate < 0){
    double x1 = -b/(2*a);
    discriminate = -discriminate ;
    double x2 = Math.Sqrt(discriminate)/(2*a);
    double x3 = -Math.Sqrt(discriminate)/(2*a);
}
Console.WriteLine(x1.ToString() + " + " + x2.ToString() + " * i ");
Console.WriteLine(x1.ToString() + " + " + x3.ToString() + " * i ");