Можешь "включить" подробный вывод, если объявишь макрос "#define DEBUG"
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace cool{ class main { static void Main(string[] args) { int u1 = 1, u2 = 2; int l1 = 1, l2 = 1; double a = 0, eps = 0.001; int i = 2; int U, L; double A;
U = u2 + u1; L = l2 + l1; A = (double)U / L;
while (Math.Abs(A - a) > eps || i < 5) { a = A; i++; l1 = l2; u1 = u2; l2 = L; u2 = U;
U = u2 + l2; L = l2 + l1; A = (double)U / L;
#if DEBUG Console.WriteLine("{0} -> {1}|{2}", i, U, L); #endif if (i == 5) Console.WriteLine("Пятый элемент: {0}", A); if (Math.Abs(A - a) < eps) Console.WriteLine("Элемент, отличающийся на менее чем {1}: {0}", A, eps); } } } }
Первую задачу можно решить с таблицы истинности, хотя она довольно простая и без неё.
Обозначим логическими переменными высказывания:
С – «Саша - инициатор прогула»
К – «Коля - инициатор прогула»
В - «Вова - инициатор прогула»
Учтём, что инициатором был кто-то один из них, значит, в таблице истинности мы пишем по одной единице (истина) под предполагаемым инициатором прогула. Всего строк исходных значений будет 3, а не 8.
Каждый из них высказал 2 предложения. Мы их обозначим так:
Саша: НЕ(С), К
Коля: НЕ(К), В
Вова: К, НЕ(В)
Учитель почувствовал, что двое говорят правду наполовину, а один лжёт. Значит надо искать строку, в которой у одного из мальчиков будет 0 и 0, а двух других 0 и 1. Такая строка одна, в представленной таблице она последняя. Саша лжёт, а остальные говорят правду наполовину. Теперь посмотрим на первые три столбика. В этой строке 1 стоит под Сашиным именем. Значит, он и является инициатором прогула.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace cool{
class main
{
static void Main(string[] args)
{
int u1 = 1, u2 = 2;
int l1 = 1, l2 = 1;
double a = 0, eps = 0.001;
int i = 2;
int U, L;
double A;
U = u2 + u1;
L = l2 + l1;
A = (double)U / L;
while (Math.Abs(A - a) > eps || i < 5)
{
a = A;
i++;
l1 = l2; u1 = u2;
l2 = L; u2 = U;
U = u2 + l2;
L = l2 + l1;
A = (double)U / L;
#if DEBUG
Console.WriteLine("{0} -> {1}|{2}", i, U, L);
#endif
if (i == 5)
Console.WriteLine("Пятый элемент: {0}", A);
if (Math.Abs(A - a) < eps)
Console.WriteLine("Элемент, отличающийся на менее чем {1}: {0}", A, eps);
}
}
}
}
Первую задачу можно решить с таблицы истинности, хотя она довольно простая и без неё.
Обозначим логическими переменными высказывания:
С – «Саша - инициатор прогула»
К – «Коля - инициатор прогула»
В - «Вова - инициатор прогула»
Учтём, что инициатором был кто-то один из них, значит, в таблице истинности мы пишем по одной единице (истина) под предполагаемым инициатором прогула. Всего строк исходных значений будет 3, а не 8.
Каждый из них высказал 2 предложения. Мы их обозначим так:
Саша: НЕ(С), К
Коля: НЕ(К), В
Вова: К, НЕ(В)
Учитель почувствовал, что двое говорят правду наполовину, а один лжёт. Значит надо искать строку, в которой у одного из мальчиков будет 0 и 0, а двух других 0 и 1. Такая строка одна, в представленной таблице она последняя. Саша лжёт, а остальные говорят правду наполовину. Теперь посмотрим на первые три столбика. В этой строке 1 стоит под Сашиным именем. Значит, он и является инициатором прогула.