1)Если оба операнда имеют значение true, тогда операторы & и && возвращают true.
Если хотя бы один операнд имеет значение true, тогда операторы | и || возвращают true.
Операторы & и | всегда проверяют значение обоих операндов. && и || носят название операторов короткой схемы, так как если результат булевого выражения может быть определён из левого операнда, правый операнд не вычисляется.
Примечание: || и && могут быть использованы только в логических выражениях.
2) Таблица истинности — это таблица, описывающая логическую функцию.
3) тернарный оператор- операция, возвращающая свой второй или третий операнд в зависимости от значения логического выражения, заданного первым операндом.
Объяснение:
надеюсь
Поделитесь своими знаниями, ответьте на вопрос:
uses crt;
{разделители слов, можно еще добавить}
const zn=[' ',': ',',','! ','? ','-','; ',')'];
var s,s1,s2: string;
i,k: byte;
begin
clrscr;
writeln('введите строку, содержащую 2 одинаковых слова: ');
readln(s);
s: =s+' '; {добавим в конец пробел}
for i: =1 to length(s) do
if s[i] in zn then s[i]: =' '; {все разделители заменим на пробелы}
while pos(' ',s)> 0 do{пока есть 2 пробела рядом(в апострофах 2 пробела)}
delete(s,pos(' ',s),1); {1 пробел удаляем}
if s[1]=' ' then delete(s,1,1); {если первый символ пробел, тоже удаляем}
k: =0;
while pos(' ',s)> 0 do{пока есть пробел}
begin
s1: =copy(s,1,pos(' ',s)-1); {копируем первое слово до пробела}
for i: =pos(' ',s)+1 to length(s) do{смотрим строку дальше}
if (copy(s,i,length(s1))=s1){если набор символов совпадает с этим словом}
and(s[i-1]=' '){и перед ним пробел}
and((s[i+length(s1)]=' '){и за ним пробел}
or(i+length(s1)-1=length( then{или это последнее слово}
begin
k: =1; {фиксируем совпадение}
s2: =s1; {запоминаем слово}
write('одинаковые слова ',s2); {выводим на экран}
readln;
exit; {выходим из программы, нужно только 1 пару}
end;
delete(s,1,pos(' ',s)); {удаляем первое слово, следующее первое}
end;
if k=0 then write('нет двух одинаковых слов');
readln
end.
залил тебе на пастибин, что-бы тебе удобней было.