IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> задание с файлом, подготовка к экзамену
Катюша
сообщение 22.07.2005 22:25
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 55
Пол: Женский

Репутация: -  0  +


Дан файл, содержащий русский текст. Найти в тексте 4 самых длинных
слова, оканчивающихся заданной буквой. Записать найденные слова в текстовый файл. Все найденные слова должны быть разными!


просьба помочь написать программу smile.gif


--------------------
Удачи.
Катерина
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 22.07.2005 23:18
Сообщение #2


Гость






"Помочь написать" и "написать от начала до конца" - немного разные вещи... Ты бы говорила конкретно, что именно не получается, готовиться к экзамену должна ты, а не мы...

Вот так я бы делал первую программу:
uses crt;
const
delimiters = [' ', '.', ',']; { это - разделители между словами }
letter = 's'; { та самая буква, которая должна быть последней }

const
amount = 4; { столько слов, оканчивающихся буквой lettter надо найти }
type
str_array = array[1 .. amount] of string;
const
long_words: str_array =
('', '', '', '');
min_len: integer = 0;

{
это дополнительная проц-ра для сортировки массива
(пузырек, взято из FAQ...)
}
procedure sort_array(var ar: str_array; n: integer);
var
i, j: integer;
T: string;
begin
For i := 1 To n Do
For j := n DownTo i+1 Do
If length(ar[Pred(j)]) > length(ar[j]) Then Begin
T := ar[Pred(j)]; ar[Pred(j)] := ar[j]; ar[j] := T
End
end;

{
процедура проверяет, нужно ли включать слово S в массив,
и если нужно - слово запоминается, при этом самое короткое
из ранее запомненных слов "выталкивается" из массива...
}
procedure check_word(s: string);
var
i: integer;
begin
if (length(s) > min_len) and (s[length(s)] = letter) then begin
sort_array(long_words, amount);

for i := 1 to amount do
if long_words[i] = s then exit;
long_words[1] := s;

sort_array(long_words, amount);
end;
end;

var
f: text;
s, next_word: string;
i: byte;

begin
assign(f, 'katusha_1.txt'); { файл, с которым я прогонял программу }
reset(f);

while not eof(f) do begin
readln(f, s);

i := 1;
while i <= length(s) do begin
while (s[i] in delimiters) and (i <= length(s)) do inc(i);
next_word := '';

while not (s[i] in delimiters) and (i <= length(s)) do begin
next_word := next_word + s[i]; inc(i)
end;

{ в этом месте в next_word хранится очередное найденное слово }
check_word(next_word);
end;
end;

close(f);

{ здесь замени вывод на экран выводом в файл }
for i := 1 to amount do
if long_words[i] <> '' then writeln(long_words[i]);
end.

(проверь, я не компилировал ее в TurboPascal, только в FPC)... И для русских символов тоже. Ну нет у меня кириллицы...


Прикрепленные файлы
Прикрепленный файл  katusha_1.txt ( 70 байт ) Кол-во скачиваний: 157
 К началу страницы 
+ Ответить 
Катюша
сообщение 22.07.2005 23:38
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 55
Пол: Женский

Репутация: -  0  +


пыталась скачать файл - не вышло..

текст скопировала. буду разбирацца :D

что такое пузырек тоже буду разбираться

распаковку текста заметила.. но торгознула.. тож разбирусь


--------------------
Удачи.
Катерина
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 24.06.2025 10:22
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"