Вывод значений выражений на экран. Почему-то игнорирует это: "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();
}
}
}