Консультация № 90960
11.06.2007, 15:19
0.00 руб.
0 2 2
Здравствуйте, очень нужна ваша помощь, помогите пожалуйста решить 2 задачки:

1) Пусть дан текстовый файл. Для каждой строки распечатайте первое из слов, содержащих наибольшее число различных букв.

2) Дан файл, содержащий текст на рус. языке. Выяснить, входит ли введенное с клавиатуры слово в указанный текст. И если да, то сколько раз.

Обсуждение

Неизвестный
11.06.2007, 17:52
общий
это ответ
Здравствуйте, Максим Сергеевич!
По первому вопросу:
type ar = Record
n: integer;
s: string;
end;

var F: TextFile;
s,tmp: string;
A: Set of Char;
Mass: array[1..100] of ar;
n,count,i,j,max: integer;
begin
ClrScr;
Assign(F,‘text.txt‘);
Reset(F);
While not Eof(F) do
begin
n:=1;
Readln(F,s);
for j:=1 to Length(s) do
begin
if s[j]<>‘ ‘ then
begin
tmp:=tmp+s[j];
end else
begin
for i:=1 to Length(tmp) do
begin
if Not(tmp[i] in A) then
begin
Inc(count);
A:=A+[tmp[i]];
end;
end;
Mass[n].n:=count;
Mass[n].s:=tmp;
count:=0;
tmp:=‘‘;
Inc(n);
A:=[];
end;
end;
max:=0;
for i:=1 to n do
begin
if max<Mass[i].n then
begin
max:=Mass[i].n;
count:=i;
end;
end;
if max<>0 then Writeln(Mass[count].s,Mass[count].n);
end;
CloseFile(F);
ReadKey;
end.

По второму вопросу в приложении:

Приложение:
var F: TextFile; s,st: string; p,count,i: integer;begin ClrScr; count:=0; Write(‘Input test word : ‘); Read(st); Assign(F,‘text.txt‘); Reset(F); count:=0; While not Eof(F) do begin Readln(F,s); While Pos(st,s)<>0 do begin p:=Pos(st,s); if p<>0 then begin Inc(count); for i:=p to p+Length(st) do s[i]:=‘ ‘; end; end; end; if count<>0 then begin Write(‘Slovo ‘+st+‘ vstrechaetsya ‘); Write(count); Writeln(‘ raz!‘); end; CloseFile(F); ReadKey;end.
давно
Старший Модератор
31795
6196
11.06.2007, 18:29
общий
это ответ
Здравствуйте, Максим Сергеевич!

Смотрите приложение.
Программа выполняет первую задачу и потом переходит ко второй.
Удачи!

Приложение:
program q90960; var a:string[100];{строка для имени файла искомого слова} b:packed array[0..255]of integer;{массив для контроля символов} c:char;{переменная для чтения из файла} d:string[100];{строка для хранения текущего слова} e:boolean;{служебные переменные} f:text;{для работы с файлом} g,h,i,j:integer;{служебные переменные} begin {1} {вводим имя файла и открываем его для чтения} write(‘enter you first file name:‘); readln(a); assign(f,a); reset(f); {счетчик максимального кол-ва символов} h:=0; {читаем до конца файла} while not eof(f) do begin {сбрасываем массив контроля} for i:=0 to 255 do b[i]:=0; {готовим данные} e:=true;{контроль наличия знака разделителя} g:=0;{счетчик прочитанных символов} d:=‘‘;{строка для запоминания текущего слова} while not eof(f) and e do begin {ситаем символ} read(f,c); {проверяем его} if (c>=‘A‘)and(c<=‘Z‘)or (c>=‘a‘)and(c<=‘z‘)or (c>=‘А‘)and(c<=‘Я‘)or (c>=‘а‘)and(c<=‘я‘) then begin {это символ} inc(g); inc(b[ord(c)]); d:=d+c; end else begin {это не символ} e:=false; end; end; {если длина прочитаного слова не 0 проверяем} if g>0 then begin {проверяем сколько всего символов в слове} j:=0; for i:=65 to 247 do if b[i]>0 then inc(j); if h<j then begin {если больше запоминаем текущие значения} a:=d; h:=j; writeln(d);{выводим для контроля} end end; end; {выводим результат} writeln(‘maximum any char:‘,h,‘ in one word:‘,a); close(f); {это слово только для проверки программы facecontroloftable} {2} {вводим имя файла и открываем его для чтения} write(‘enter you second file name:‘); readln(a); assign(f,a); reset(f); {вводим искомое слово} write(‘enter you word:‘); h:=0; while not eof(f)do begin{поиск пока на конец файла} read(f,c); i:=1; e:=true; while e do begin {сравниваем с искомым словом} if(a[i]=c)and(i<=length(a))then begin {если совпадает дальше} inc(i); read(f,c); end else begin {не совпало} e:=false; end; end; {совпало увеличиваем счетчик} if i>length(a) then inc(h); end; close(f); {выводим результат} writeln(‘word:‘,a,‘ present in this file:‘,h); end.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа