C++ : Формула BNF для идентификатора: :: = { | } id-идентификатор letter-буква digit-цифра Соответствуют ли следующие варианты данной формуле бнф? 1)Zv 2)dd 3)x15x 4)m77 5)zerozero
Ищем в таблице истинности строку, дающую F=1. Это нижняя строка. Теперь надо из выражений 1-4 выбрать то, которое при указанном наборе значений x1-x7 даст истинное значение. Проверяем выражения, содержащие операции "И". Каждое такое выражение будет истино, если все его элементы истины. 1) х1 должно быть истинным, а у нас х1 ложно. Выражение отвергаем. 4) Должны быть ложны х1, х3, х6 и х7. В точности, как у нас. Походит. Два оставшихся выражения содержат операции "ИЛИ". Такое выражение будет истинно, если истинен хоть один его элемент. 2) х1 должен быть истинным, у нас он ложен, у нас он истинный, х3 должен быть истинный, у нас он должный, х4 должен быть ложный, у нас он истинный, х5,х6, х7 - все должны быть истинными и у нас х5 истинный. Подходит 3) х1 должен быть ложным, у нас он ложный. Подходит. Теперь проверяем, будут ли отобранные нами выражения 2), 3) и 4) давать ложное значение при наборе параметров из первых двух строчек. 4) х1 истинно в обоих проверяемых наборах параметров, а оно должно быть ложным. В связи с этим выражение вернет значение ложно, что и ожидается. Подходит, выражение все проверки. 2) х1 должно быть ложным, чтобы все выражение было ложным, а во втором наборе таблицы истинности указано истинное значение. Выражение отвергаем. 3) х1 должно быть истинным, чтобы все выражение было ложным, а в первом наборе таблицы истинности указано истинное значение. Выражение отвергаем.
Решение: только последнее (четвертое) выражение удовлетворяет условиям задачи.
Program Table; uses math; //подключаем математический модуль, возможно с модулем я ошибся var // объявляем локальные переменные для программы a , b, h : Real; //указывает дробный тип числа
function calculate_f( x: Real) : Real; //объявляем функцию в теле программы begin calculate_f := 1/2*sin(x/4+1) ; //записываем результат вычисления в функцию end;
Begin a := -0.99; //определяем b := 50.0; //вводные h := 0.1; //значения
while a < b do begin //пока "a" меньше "b" writeln("F(", a, ') = ', calculate_f(a)); //выводим результат вычислений в строку a := a + h; //прибавляем шаг "h" end; end.
Я могу и ошибиться, потому что писал на Паскале оочень давно :D Поэтому Вам прийдется поправить некоторые ошибки в коде.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку