Что делать? program n1; type test = class private var a: integer: = 10; public var b: integer: = 15; end; begin var cl: test : = new test(); writeln(cl.a); // должно не выполняться но паскалю пофиг writeln(cl.b) // выпонится end.
Сначала немного теории. Тут у нас импликация(если..то...), комбинированная с конъюнкцией(и). Таблица истинности импликации(стрелочки): 0 0 1 0 1 1 1 0 0 1 1 1 Общее правило: если a<=b, тогда правда Таблица истинности конъюнкции(/\): 0 0 0 0 1 0 1 0 0 1 1 1 Общее правило: если есть одна ложь-всё ложь. Про НЕ и гуманитарий поймёт. Про данный пример: Нам нужен вариант, где оба выражения являются правдой, т.к. между ними стоит И Подробно рассмотрим первый вариант: Ирина Первая буква гласная-правда Вторая буква гласная-ложь Значит, результат импликации-ложь, в чём можно убедиться взглянув на таблицу истинности, но, так как НЕ так же присутствует в данном условии, это выражение возвращает правду. Последняя буква гласная-правда Так как оба выражения при конъюнкции правда, всё выражение является правдой и удовлетворяет условию.
var a: array[1..n] of real; i, j: integer; min, max: real; sum, product, harmonic: real;
begin {ввод массива} writeln('Данные массива:'); for i := 1 to n do begin a[i] := random(40) - 20; write(a[i], ' '); end; writeln();
{подсчет суммы и произведения и агригатов} sum := 0; for i := 1 to n do sum := sum + a[i]; writeln('average = ', sum / n);
{минимум и максимум} min := a[1]; for i := 1 to n do if min > a[i] then min := a[i]; writeln('min = ', min);
{подсчет суммы и произведения и агригатов} sum := 0; for i := 1 to n do if i mod 2 = 0 then {если нужен фильтр} sum := sum + a[i]; writeln('sum = ', sum); end.