Программа должна правильно выполнятся при любых значениях начальных данных и печатать комментарии в случае отсутствия решения либо его неопределенности.
1. Пример программы, решения неравенства
при значениях шага решения и постоянных в неравенстве, считываемых из файла «a.txt» :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplicationЛаб_3
{
class Program
{
static double a = 0, b = 0, c = 0, d = 0;
static void Main(string[] args)
{
double h = 0.01, x0 = -100,x1,xn=100,x;
double [] A=new double[30];
int i = 0;
string st;
FileStream s = new FileStream("a.txt", FileMode.Open);
StreamReader Re = new StreamReader(s);
// Считывание из файла a,b,c,d;
st=Re.ReadLine();
a = Convert.ToDouble(st);
Console.WriteLine("a= {0:f2}",a);
st = Re.ReadLine();
b = Convert.ToDouble(st);
Console.WriteLine("b= {0:f2}", b);
st = Re.ReadLine();
c = Convert.ToDouble(st);
Console.WriteLine("c= {0:f2}", c);
st = Re.ReadLine();
d = Convert.ToDouble(st);
Console.WriteLine("d= {0:f2}", d);
Console.WriteLine("Решение неравенства ax^3+bx^2+cx+d>0");
Re.Close();
s.Close();
x = x0;
A[0] = x0;
while (x <= xn)
{
x1 = x + h;
if(f(x)*f(x1)<=0)
{
i++;
A[i]=x+h/2;
Console.WriteLine("i={0} при x={1:f3} левая часть равн нулю", i,A[i]);
}
x += h;
}
A[i + 1] = xn;
for (int j = 0; j < i+1; j++)
|
|
{
if (f(A[j] + h / 2) > 0)
{
Console.WriteLine("Неравенство верно на промежутке [{0:f3}; {1:f3}]", A[j], A[j + 1]);
}
else
{
Console.WriteLine("Неравенство неверно на промежутке [{0:f3}; {1:f3}]", A[j], A[j + 1]);
}
}
Console.ReadLine();
}
static double f(double x)
{
return a * Math.Pow(x, 3) + b * Math.Pow(x, 2) + c * x + d;
}
}
}
Результат выполнения программы:
Рис 3.1 Окно консольного приложения на экране.
2. Пример программы, решения системы неравенств
при значениях шага решения и постоянных в неравенстве, считываемых из файла «a.txt» :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplicationЛаб_3._1
{
class Program
{
static double a = 0, b = 0, c = 0, d = 0;
static void Main(string[] args)
{
double h = 0.01, x0 = -100,x1,xn=100,x;
double [] A=new double[30];
int i = 0;
string st;
FileStream s = new FileStream("a.txt", FileMode.Open);
StreamReader Re = new StreamReader(s);
// Считывание из файла a,b,c,d;
st=Re.ReadLine();
a = Convert.ToDouble(st);
Console.WriteLine("a= {0:f2}",a);
st = Re.ReadLine();
b = Convert.ToDouble(st);
Console.WriteLine("b= {0:f2}", b);
st = Re.ReadLine();
c = Convert.ToDouble(st);
Console.WriteLine("c= {0:f2}", c);
st = Re.ReadLine();
d = Convert.ToDouble(st);
Console.WriteLine("d= {0:f2}", d);
Console.WriteLine("Решение системы неравенств (ax^3+bx^2>0)&&(cx+d>0)");
Re.Close();
s.Close();
x = x0;
A[0] = x0;
while (x <= xn)
{
x1 = x + h;
if(f(x)^f(x1))
{
i++;
A[i]=x+h/2;
Console.WriteLine("i={0} при x={1:f3} система меняет характер выполнения", i, A[i]);
}
x += h;
}
A[i + 1] = xn;
for (int j = 0; j < i+1; j++)
{
if (f(A[j] + h / 2))
{
Console.WriteLine("Система неравенств верна на промежутке [{0:f3}; {1:f3}]", A[j], A[j + 1]);
}
else
{
Console.WriteLine("Система неравенств неверна на промежутке [{0:f3}; {1:f3}]", A[j], A[j + 1]);
}
}
Console.ReadLine();
}
static bool f(double x)
{
bool z1 = a * Math.Pow(x, 3) + b * Math.Pow(x, 2) > 0;
bool z2 = c * x + d > 0;
if (z1 && z2)
return true;
else
return false;
}
}
}
Результат выполнения программы:
Рис 3.2 Окно консольного приложения на экране.
|
|
Варианты задания
Таблица 3.1
№ варианта | Неравенства | Уравнения |