28.06.2011, 20:17 | #11 (permalink) |
Вечная ученица
Регистрация: 27.06.2011
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Буду крайне признательна. |
28.06.2011, 20:17 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Уделите пожалуйста некоторое время на прочтение аналогичных тем Решить задачу о строках в С++ Помогите решить задачу в Паскале Помогите решить задачу на Паскале Помогите решить задачу в паскале Срочно решить задачу! Не могу решить задачу |
28.06.2011, 20:55 | #14 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Между прочим, суть почти точно соответствует Вашему алгоритму (#1).
Различия: 1. Чем разделены слова - точками, пробелами, многоточиями, знаками вопроса и т.п. - несущественно: "обрываем" слово, когда следующий символ - НЕ буква. Дальше продолжаем перебор, пока символ не станет буквой или файл не кончится. 2. Если слово соответствует условию, счетчик увеличиваем на 1, в противном случае не делаем ничего, т.е. прибавка 0 не предусмотрена. |
28.06.2011, 21:16 | #15 (permalink) |
Вечная ученица
Регистрация: 27.06.2011
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Действительно, так получается проще, если не брать во внимание, чем разделены слова.
Потихоньку разбираю, вот только что делается здесь: Until NOT (Ch in Lit); If fl1 and fl2 then Inc(N); fl1:=false; UNTIL EoF(f); |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
28.06.2011, 21:38 | #16 (permalink) | ||||
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Цитата:
1. Если b - булева переменная, то условие "if b then" полностью эквивалентно "if b=true then". Просто сокращенная запись. 2. Inc(N) полностью эквивалентно N:=N+1. Цитата:
If Ch in Vow then fl1:=true; нужно заменить на If Ch in Vow then fl1:=true else fl1:=false; Цитата:
|
||||
28.06.2011, 21:45 | #17 (permalink) |
Вечная ученица
Регистрация: 27.06.2011
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Вот теперь все понятно, просто я не знала, про сокращенную запись. Спасибо за объяснение.
И еще вопрос: Чтобы вывести результат в отдельный файл, надо добавить assign(res,'F:\pask\bin\pr5.res'); rewrite(res) ? |
28.06.2011, 21:51 | #18 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
А вот если надо выводить сами слова, начинающиеся и оканчивающиеся гласными, то программа существенно усложняется. Хотя и это решаемо. |
|
28.06.2011, 22:22 | #20 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Writeln('The number of words beginning and ending with vowels is ',N); строкой Writeln(res,'The number of words beginning and ending with vowels is ',N); и только после этого вставить Close(res); ? Между прочим, если вывод - файловый, то останов Readln перед финальным END следует убрать - он не нужен. |
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|