Спасибо за быстрый ответ, но есть еще проблема, как в начале программы объявлять переменную типа масив, в моем пособии есть только с диапозоном, типа:
var a:array [1..20] of integer;
что означает переменная n? Еще вопрос, как заполнятся должен массив в первом задании. Проблема в том, что я это как-то смутно представляю.
Во втором задании я накопал алгоритм, программа запускается, только не работает т.е. не считает кол-во слов на заглвную букву.
Проверьте, что я там мог упустить?
const
symbols = ['+', '-', ':', '.', '*', '/','>', '=', '<'];
{Есть-ли в слове одинаковые соседнии буквы}
function isHaveEq(data : string) : Boolean;
var
flag : Boolean;
i : Integer;
begin
flag := false;
i := 1;
while (i <= length(data)) and (not flag) do
begin
{Регистр не важен}
if ( (data[i] = data[i - 1]) or (ord(data[i])+32 = ord(data[i - 1])) or
(ord(data[i]) = ord(data[i - 1])+32)
)
and
( ( (data[i] >= 'a') and (data[i] <= 'z') ) or
( (data[i] >= 'A') and (data[i] <= 'Z') )
) then
flag := true;
i := i + 1;
end;
isHaveEq := flag;
end;
{Буква заглавная?}
function isCapital(data : char) : Boolean;
begin
if (ord(data) >= 65) and (ord(data) <= 90) then
isCapital := true
else
isCapital := false;
end;
{Есть-ли в слове символы}
function isHaveSymbols(data : string) : Boolean;
var
flag : Boolean;
i : Integer;
begin
flag := false;
i := 1;
{Go to first space}
while (not flag) and (i <= length(data)) do
begin
if data[i] in symbols then
flag := true;
inc(i);
end;
isHaveSymbols := flag;
end;
var
calnum, preqv : Boolean;
data : string;
i : Integer;
count : Integer;
wd : string; {буффер}
whatDo : Integer; {Так, фигня}
begin
calnum := true;
preqv := true;
count := 0;
wd := '';
writeln('Чего надо? (1 - кол-во слов, 2 - слова с один. сос. буквами, все)');
readln(whatDo);
case whatDo of
1: preqv := false;
2: calnum := false;
end;
write('Строка: '); readln(data);
{Прибавляем к строке пробел}
data := data + ' ';
i := 1;
while i <= length(data) do
begin
{если встречаю '**', оканчиваю цикл}
if (data[i] = '*') and (data[i + 1] = '*') and
((data[i + 2] = ' ') or (i + 2 >= length(data))) then
i := length(data) + 1;
if data[i] <> ' ' then
wd := wd + data[i]
else
begin
if (isCapital(wd[1])) and (calnum) and
(isHaveSymbols(wd)) then
inc(count);
if (isHaveEq(wd)) and (preqv) then
writeln(wd);
wd := '';
end;
i := i + 1;
end;
if calnum then
writeln('Кол-во слов, начинающ. с заглавной, и имеющих символы ',count);
end.