Вывод значений выражений на экран. Почему-то игнорирует это: "if (n == 0) || (m == 0)" - C#

Узнай цену своей работы

Формулировка задачи:

Не понимаю, почему при вводе m=0 или n=0 программа обходит стороной "if ((n == 0) || (m == 0))" и вместо вывода сообщения"Нельзя вычислить", выводит какое-либо значение переменной b, что здесь не так? объясните, пожалуйста. Код программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication12
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Программа нахождения значений выражений");
            double m = 0, n = 0, x = 0, y = 0, s1 = 0,c=0,d=0;
            bool OK1 = false, OK2 = false, OK3 = false, a = false, b = false;
            while (!OK1)
            {
                try
                {
                    Console.Write("n?");
                    n = Convert.ToDouble(Console.ReadLine());
                    OK1 = true;
                }
                catch (FormatException)
                { Console.WriteLine("Ошибка ввода!"); }
            }
            while (!OK2)
            {
                try
                {
                    Console.Write("m?");
                    m = Convert.ToDouble(Console.ReadLine());
                    OK2 = true;
                }
                catch (FormatException)
                { Console.WriteLine("Ошибка ввода!"); }
            }
            while (!OK3)
            {
                try
                {
                    Console.Write("x?");
                    x = Convert.ToDouble(Console.ReadLine());
                    OK3 = true;
                }
                catch (FormatException)
                { Console.WriteLine("Ошибка ввода!"); }
            }
            if (m == 0)
                Console.WriteLine("Нельзя вычислить!");
            else
            {
                s1 = n / m++;
                Console.WriteLine();
                Console.WriteLine("n={0} m={1} (n / m++)={2} ", n, m, s1);
                Console.WriteLine("Для продолжения нажмите Enter..");
                Console.ReadLine();
            }
            a = (m++ < --n);
            Console.WriteLine("(m++<--n)={0} ", a);
            Console.WriteLine();
            Console.WriteLine("Для продолжения нажмите Enter..");
            Console.Read();
Обращаю внимание на этот участок кода:
C#
            y = Math.Sqrt(Math.Abs(x * x * x - 1)) - 7 * (Math.Cos(Math.Pow((x * x * x * x + x), (1 / 3))));
            Console.WriteLine("Sqrt(Abs(x*x*x-1))-7*(Cos((x*x*x*x+x)^(1/3))) = {0}", y);
            Console.WriteLine("Для выхода нажмите Enter...");
            Console.Read();
            Console.ReadKey();

        }
    }
}

Решение задачи: «Вывод значений выражений на экран. Почему-то игнорирует это: "if (n == 0) || (m == 0)"»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication12
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Программа нахождения значений выражений");
            double m = 0, n = 0,n0=0,m0=0, x = 0, y = 0, s1 = 0,c=0,d=0;
            bool OK1 = false, OK2 = false, OK3 = false, a = false, b = false;
            while (!OK1)
            {
                try
                {
                    Console.Write("n?");
                    n = Convert.ToDouble(Console.ReadLine());
                    OK1 = true;
                }
                catch (FormatException)
                { Console.WriteLine("Ошибка ввода!"); }
            }
            while (!OK2)
            {
                try
                {
                    Console.Write("m?");
                    m = Convert.ToDouble(Console.ReadLine());
                    OK2 = true;
                }
                catch (FormatException)
                { Console.WriteLine("Ошибка ввода!"); }
            }
            while (!OK3)
            {
                try
                {
                    Console.Write("x?");
                    x = Convert.ToDouble(Console.ReadLine());
                    OK3 = true;
                }
                catch (FormatException)
                { Console.WriteLine("Ошибка ввода!"); }
            }
            if (m == 0)
                Console.WriteLine("Нельзя вычислить!");
            else
            {
                m0 = m;
                s1 = n / m0++;
                Console.WriteLine();
                Console.WriteLine("n={0} m={1} (n / m++)={2} ", n, m0, s1);
                Console.WriteLine("Для продолжения нажмите Enter..");
                Console.ReadLine();
            }
            m0 = m;
            n0 = n;
            a = (m0++ < --n0);
            Console.WriteLine("(m++<--n)={0} ", a);
            Console.WriteLine();
            Console.WriteLine("Для продолжения нажмите Enter..");
            Console.Read();
 
            if ((n == 0) || (m == 0))
                Console.WriteLine("Нельзя вычислить!");
            else
            {
                c = (m / n);
                c++;
                d = n / m;
            b=(c<d);
                Console.WriteLine("(((m/n)++)<(n/m))={0}",b);
                Console.WriteLine();
                Console.WriteLine("Для продолжения нажмите Enter..");
                Console.ReadLine();
            }
            y = Math.Sqrt(Math.Abs(x * x * x - 1)) - 7 * (Math.Cos(Math.Pow((x * x * x * x + x), (1 / 3))));
            Console.WriteLine("Sqrt(Abs(x*x*x-1))-7*(Cos((x*x*x*x+x)^(1/3))) = {0}", y);
            Console.WriteLine("Для выхода нажмите Enter...");
            Console.Read();
            Console.ReadKey();
 
 
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы