Задание: 1) преобразовать данную программу таким образом, чтобы использовался цикл do…while;
2) Найти минимум функции y=2x3 с циклов while и do…while.
Using System;
using System.Collections.Generic; using System.Linq;
using System.Text;
namespace Lab4
{
class Program
{
static void Main(string[] args)
{
double a, b, c, q, y1, y2; /*присвоение переменным вещественный тип данных */
Console.WriteLine("Введите начальную точку");
a = Convert.ToDouble(Console.ReadLine());/* преобразует
строковый тип в вещественный тип данных */
Console.WriteLine("Введите конечную точку"); b = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Введите допустимую погрешность q"); q = Convert.ToDouble(Console.ReadLine());
while (Math.Abs(b - a) > q) /* оператор цикла while c преду-
словием */
{
Console.WriteLine("a={0}", a);// первое значение аргумента Console.WriteLine("b={0}", b);// второе значение аргумента c = (a + b) / 2; // середина отрезка [а,b]
y1 = Math.Pow((c - q), 2);/* возведение в квадрат с учетом
допустимой погрешности q */
y2 = Math.Pow((c - q), 2);
if (y2 < y1) a = c; if (y2 > y1) b = c;
if (y2 == y1) /* если выполняются условие сравнения y2=y1,
то происходит вычисление a и b */
{ a = c - q; b = c + q;
}
}
Console.WriteLine("Минимум функции y=x^2 находится в точке x=");
Console.WriteLine((a + b) / 2);
}
}
}
Объяснение:
1. ( 1 или 0) это логическое "или" поэтому будет равно 1, тоже самое со второй скобкой. В третьей скобке импликация. Она равна нулю только при первом аргументе 1, а при втором 0. Теперь у нас конъюнкция между 1 и 1. Конъюнкция равна единице, когда оба аргумента единицы. Теперь конъюнкция между 1 и 0. Из сказанного выше, это будет равняться 0. ответ 0.
2. Первая скобка: Не а или не а будет равно 1, по закону исключённого третьего. Вторая скобка не в или не в будет равна не в (—в). Между 1 и не в следует поставить знак дизъюнкции, что б выражения всегда принимало значение истина(1)
Обозначим через m количество единиц, а через n - количество двоек.
В цикле m и n изменяются следующим образом:
n=n-3
m=m+1
m=m-3
n=n+1
Итого: m=m-2; n=n-2. То есть и m и n уменьшаются на 2.
m и n - нечетные, n-m=100. Следовательно, через некое количество вычислений, последовательно уменьшаясь на 2, m примет значение 3, а n - значение 103.
n=n-3=103-3=100
m=m+1=3+1=4
m=m-3=4-3=1
n=n+1=100+1=101
Теперь цепочки их трех единиц нет. До тех пор, пока цепочка из трех единиц не образуется, операции m=m-3 и n=n+1 мы, по условию, не производим. Повторим несколько вычислений в цикле.
n=n-3=101-3=98
m=m+1=1+1=2
возвращаемся к началу цикла
n=n-3=98-3=95
m=m+1=2+1=3
m=m-3=3-3=0
n=n+1=95+1=96
возвращаемся к началу цикла
n=n-3=96-3=93
m=m+1=0+1=1
Значения m=1 и n=101 изменились на m=1 и n=93.
То есть m как было, так и осталось равным единице, а n уменьшилось на 8.
8*[101/8]=8*12=96
101-96=5
То есть, через некоторое количество вычислений, мы придем к следующим значениям: m=1 и n=5
Далее получаем:
n=n-3=5-3=2
m=m+1=1+1=2
Поскольку строка из трех двоек больше не находится, цикл завершается.
На выходе получаем строку из двух единиц и двух двоек.