![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Катюша |
![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 55 Пол: Женский Репутация: ![]() ![]() ![]() |
Дан файл, содержащий русский текст. Найти в тексте 4 самых длинных
слова, оканчивающихся заданной буквой. Записать найденные слова в текстовый файл. Все найденные слова должны быть разными! просьба помочь написать программу ![]() -------------------- Удачи.
Катерина |
volvo |
![]()
Сообщение
#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)... И для русских символов тоже. Ну нет у меня кириллицы... Прикрепленные файлы ![]() |
Катюша |
![]()
Сообщение
#3
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 55 Пол: Женский Репутация: ![]() ![]() ![]() |
пыталась скачать файл - не вышло..
текст скопировала. буду разбирацца :D что такое пузырек тоже буду разбираться распаковку текста заметила.. но торгознула.. тож разбирусь -------------------- Удачи.
Катерина |
![]() ![]() |
![]() |
Текстовая версия | 29.07.2025 14:22 |