Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2012, 22:56   #1
Ku-klan
 
Регистрация: 21.04.2012
Сообщений: 6
По умолчанию FREE PASCAL. Слово с самым большим количеством слогов в текстовом файле

Здравствуйте уважаемые программисты!
Дан текстовый файл. Найти самое длинное слово и слово с самым большим количеством слогов.

Есть такой код, но он не работаем.
Помогите, пожалуйста, найти ошибку!

Код:
uses
 crt;
var f:text;
    sum:char;
    s,maxsl,max,s1:string;
    m,maxs,d:integer;

function sloga(s1:string):integer;
   var i,k:integer;
       sl:string;
begin
k:=0;
sl:='eyuioa';
for i:=1 to length(s1) do
 begin
  if pos(s1[i],sl)>0 then {ищет первое вхождение строки s1 в строку sl}
  k:=k+1;
 end;
sloga:=k;
end;
begin clrscr;
assign(f,'e:\file.txt');
reset(f);
writeln('<<Содержимое файла>>');
while not eof(f) do
  begin
   readln(f,s1);
   writeln(s1);
  end;
close(f);
writeln(' ');
d:=0;
maxs:=0;
assign(f,'e:\file.txt');
reset(f);
while not eof(f) do
 if not eoln(f) then
  begin
   read(f,s);
   if  d<length(s) then
    begin
     max:=s;
     d:=length(s);
    end;
   m:=sloga(s);
   if maxs<m then
    begin
     maxsl:=s;
     maxs:=m;
    end;
   end
  else
   readln(f);
   close(f);
   writeln('Максимум слогов в слове- ',maxsl);
   write('Самое длинное слово- ',max);

readln;
end.

Последний раз редактировалось Ku-klan; 04.05.2012 в 23:42.
Ku-klan вне форума Ответить с цитированием
Старый 05.05.2012, 06:56   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Потому что такие задачи наскоком не решают. Разбей задачу на компоненты.
Я бы выделил следующие этапы:
1. Загрузка файла
2. Выделение слов в массив
3. Поиск из слов того, где больше слогов
Соответственно и разбил на некоторое количество процедур и функций.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 05.05.2012, 07:06   #3
Ku-klan
 
Регистрация: 21.04.2012
Сообщений: 6
По умолчанию

Спасибо за ответ!
Я, к сожалению, совершенный новичок.
Код нашла в интернете, но он не работал.
Пыталась переделать, но выдает еще больше ошибок.
Поэтому и обратилась с просьбой о помощи!!!
Ku-klan вне форума Ответить с цитированием
Старый 05.05.2012, 07:46   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Вот я Вам и даю основную мысль - любая задача должна разбиваться на более мелкие шаги которые нужно стараться реализовывать независимо.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 05.05.2012, 08:23   #5
Ku-klan
 
Регистрация: 21.04.2012
Сообщений: 6
Восклицание

Программа запускается,
но в ответе выдает не самое длинное слово, а самое длинное предложение.
И не слово с самым большим кол-вом слогов, а также, самое длинное предложение.

Помогите, пожалуйста!!!

Последний раз редактировалось Ku-klan; 05.05.2012 в 21:04.
Ku-klan вне форума Ответить с цитированием
Старый 06.05.2012, 06:23   #6
Ku-klan
 
Регистрация: 21.04.2012
Сообщений: 6
По умолчанию

Программисты, пожалейте девушку,
вчера пол ночи просидела за этой программой,
НИЧЕГО не выходит
скоро надо сдавать (учусь дистанционно,
спросить не у кого)
Изображения
Тип файла: jpg результат1.jpg (23.8 Кб, 92 просмотров)
Ku-klan вне форума Ответить с цитированием
Старый 06.05.2012, 10:11   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот тебе приблизительный пример для раздумий:
Код:
var s,m,w,l:string;  i,ks,sk:integer;
begin
это строка из файла
 s:='Hello madness world ';
 w:=''; ks:=0; sk:=0;

Проходим по ней в цикле
 for i:=1 to Length(s) do begin
   if s[i]<>' ' then begin
   Если не пробел то заполняем временную переменку словом
     w:=w+s[i];
   Выясняя кол-во гласных
     if s[i] in ['e','y','u','i','o','a'] then inc(ks);
   end else begin

   Если это слово длиннее - запомним его
     if Length(w)>Length(m) then m:=w;

   Если кол-во гласных больше запомним слово
     if ks>sk then begin l:=w;sk:=ks;end;
     ks:=0;
     w:='';
   end;
 end;
 writeln(m);writeln(l);
 readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
Прикрути его к своему циклу считывания из файла, и уточни условие слогов.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.05.2012, 18:46   #8
Ku-klan
 
Регистрация: 21.04.2012
Сообщений: 6
По умолчанию

Спасибо!
Буду разбираться!
Ku-klan вне форума Ответить с цитированием
Старый 07.05.2012, 07:27   #9
Ku-klan
 
Регистрация: 21.04.2012
Сообщений: 6
По умолчанию

УРА! Все получилось!
СПАСИБО!!!
Ku-klan вне форума Ответить с цитированием
Старый 18.06.2012, 09:11   #10
Durgut
 
Регистрация: 13.06.2012
Сообщений: 4
По умолчанию неполучается

а я чёт не могу догнать. не могли бы вы конечный код выложить ?! заранее очень благодарен.
Durgut вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с большим количеством текста в String иTextbox Дмитрий999 Visual C++ 0 20.02.2012 20:07
Сводная таблица с большим количеством строк s8259 Microsoft Office Excel 1 03.04.2011 00:28
Метод для управления большим количеством данных eda Microsoft Office Excel 0 13.07.2009 10:50
Исключить из файла слово с минимальным количеством слогов. катя@90 Паскаль, Turbo Pascal, PascalABC.NET 2 11.12.2008 14:23
ГСЧ с большим количеством нулей Frog25 Общие вопросы C/C++ 6 26.06.2008 18:22