Помощь в Bp7

  • Автор темы Guest
  • Дата начала
G

Guest

#1
Дан текстовый файл. Найти самое длинное слово и слово с самым большим количеством слогов

Знаю что тут надо
razd=[':','.',','{и т.д}];
количество слогов считать надо ввести [a,o,e,y,u,i,ao,ae,oe,oa и т.д.] а как это все сложить в прогу у мня догадок нету.....подскажите мысли
 
G

Guest

#2
Код:
var
temp,s,max:string;
i:integer;
begin
writeln('Введите строку...');
readln(s);
max:='';
for i:=1 to length(s) do
begin
if s[i]<>' ' then
temp:=temp+s[i];
if (s[i]=' ') or (i=length(s)) then
begin
if length(temp)>length(max) then
max:=temp;
temp:=''
end;
end;
writeln('Максимальное слово в строке - ',max)
end.
это поиск по введеному тексту....а надо по файлу?!как?!я блин тока поступил а уже такую чушь на заочке толкаю....и как с этими слогами быть?!кто нибудь подскажет?!
 
G

Guest

#3
и что нету на форуме програмистов которые не могли бы подсказать?!быть такого не может
 
R

romanriddick

#5
http://codeby.net/forum/threads/40754.html?pi...mp;#entry199322
уже отвечал севодне)))

Добавлено: а вот со слогами будет тяжелее ...
нужно в етом же двумерном массиве искать по шаблону гласные буквы
чем больше в слове гласны которые не идут сразу (идут после других букв))) тем больше в слове слогов!!!!
 
G

Guest

#6
var maxs,s,s2:string;f:file of char;c:char;w:boolean; maxe,e,i:integer;
begin
assign(f,'file1.txt');reset(f);
w:=false;maxs:=''; maxe:=0;s2:='';
while not eof(f) do begin
read(f,c);
while (not eof(f))and(c<>' ') do begin s:=s+c;read(f,c);end;
for i:=1 to length(s) do if pos(s,'eyuioa')<>0 then inc(e);
if e>maxe then begin maxe:=e;s2:=s;end;
if length(maxs)<length(s) then maxs:=s; s:='';
while (not eof(f))and(c=' ') do begin read(f,c);end;
end;
close(f);
writeln('Самое длинное слово=',maxs);
writeln('А слогов то=',s2);
readln;
end.

ну вот уже поудачней.....тока почемуто слово со слогами он выводит без первой буквы......и надо её доделать со знаками препинания...ведь слова же не тока пробелом разделяются
 
R

romanriddick

#7
в строке
while (not eof(f))and(c=' ') do begin read(f,c);end;
стрите пробел c='' ... тогда зароботает...
кстате не плохое решение!!!

а по поводу

"и надо её доделать со знаками препинания"

вы ошибаетесь розделители -- только ентер и пробел
 
G

Guest

#8
Ага.спасибо.Вот еще вопросик...
Текст в док типо:saynogorsk forever togetheralla music
Самое длинное слово:Togetheralla
Слогов в слове:musi
почему то текст даже менял выдает последнее слово и последнюю букву непишет?!
 

hosm

* so what *
18.05.2009
2 442
6
#9
for i:=1 to length(s) do if pos(s,'eyuioa')<>0 then inc(e);
до этого нет обнуления e
за последнюю букву - выходит из 1го while цикла по концу файла, а не по пробелу в с, поэтому последний считанный символ не учитывается в строку s.