26.01.2009, 17:06
общий
это ответ
Здравствуйте, Edise!
Четвертая задача в приложении.
Строка результата выглядит так:
'One:' , indexOne, - счетчик певого слова;
' Two:' , indexTwo, - счетчик второго слова;
' One after Two:' , indexOneTwo, - счетчик количества комбинаций, когда первое слово следует за вторым;
' Two after One:' , indexTwoOne - счетчик количества комбинаций, когда второе слово следует за первым.
Оператор
[b]case[/b] c [b]of[/b]{проверяем разделители и регистр букв}
'.',',',':','-','!','"','/','*','+','=','%':c:=' ';
'A'..'Z':c:=chr(ord(c)+32);
[b]end[/b];
выполняет две функции:
- приводит все слова к одному регистру т.е. к примеру: The = the;
- все знаки препинания преобразовывает в пробел - единственный стандартный разделитель для всех слов, в этой строке Вы можете добавить свои знаки или убрать лишние.
Вопросы по программе задавайте в мини-форум.
Удачи!
Приложение:
var
c:char;
one,two,last_word,next_word:string;
indexOne,indexTwo,indexOneTwo,indexTwoOne:integer;
isFile:text;
begin
{счутчики слов}
indexOne:=0;
indexTwo:=0;
indexOneTwo:=0;
indexTwoOne:=0;
{вводим первое слово}
repeat
write('Enter first word:');
readln(one);
until length(one)>0;
{вводим второе слово}
repeat
write('Enter second word:');
readln(two);
until length(two)>0;
writeln(':',one,':',two,':');
{октрываем файл}
assign(isFile,'help.txt');
reset(isFile);
next_word:='';
while not eof(isFile)do
begin
{запоминаем предыдущее слово}
last_word:=next_word;
next_word:='';
{считываем слово}
repeat{цикл считывания одного слова}
repeat{цикл игнорирования разделителей стоящий перед словом}
read(isFile,c);
case c of{проверяем разделители и регистр букв}
'.',',',':','-','!','"','/','*','+','=','%':c:=' ';
'A'..'Z':c:=chr(ord(c)+32);
end;
until (c<>' ')or(length(Next_word)>0)or(eof(isFile));
if c<>' 'then next_word:=next_word + c;{если не пробел, то добавляем символ в слово}
until (c=' ')or(eof(isFile));
{контролируем нужные параметры}
inc(indexOne,ord(one=next_word));
inc(indexTwo,ord(two=next_word));
inc(indexOneTwo,ord((one=last_word)and(two=next_word)));
inc(indexTwoOne,ord((two=last_word)and(one=next_word)));
end;
{выводим результат работы}
write('One:',indexOne,' Two:',indexTwo,' One after Two:',indexOneTwo,' Two after One:',indexTwoOne);
close(isFile);
readln;
end.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.