![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
tigra |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Женский Репутация: ![]() ![]() ![]() |
Задача на ваше профессиональное рассмотрение:
Подсчитать количество слов в тексте,которые содержат одинаковое кол-во букв. Слова в тексте разделяются символом ' ' '.' - признак конца строки. Текст вводится с клавиатуры. Не могу сделать самое главное - разбить текст на слова... Помогите чем могите. |
![]() ![]() |
GoodWind |
![]()
Сообщение
#2
|
![]() Автооответчик ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
что разделяет слова в тексте ? пробелы, следовательно каждый пробел это конец слова, т.е. если ты встречаешь пробел, значит текущее слово кончилось
на этом принципе и отделяй слова друг от друга. -------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
|
Altair |
![]()
Сообщение
#3
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Эх, такая тема раз в году точно встречается!
Надо в FAQ будет выложить. Код var s:string; i:byte; sl:byte; begin readln(s); for i:=1 to length(s) do If s[i]=' ' then inc(sl); writeln(sl); end. Вот и вся прога. -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Amro |
![]()
Сообщение
#4
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 146 Пол: Мужской Репутация: ![]() ![]() ![]() |
Хм
![]() Oleg_Z там ведь написано Цитата количество слов в тексте, которые содержат одинаковое кол-во букв А у тебя идёт просто подсчёт всех слов!!! Тута надо по-другому, к примеру используя дочерний массив, в который будем заносить число букв в слове, мы заносим в массив кол-во букв первого слова, далее берём второе слово, подсчитываем в нём кол-во букв и смотрим есть ли такое число в массиве, если есть то накручиваем переменную с кол-вом слов, если нет то заносим новое число в массив..... и так до конца... Сообщение отредактировано: Amro - 17.10.2004 10:50 -------------------- Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь. Закон программиста: Семь раз отрежь, ошибся, отмерь. |
Altair |
![]()
Сообщение
#5
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Ах, да, пардон...
так, а тогда условие не полное! например строка: Код 123 asc asd 2345 отвр сколько в ней таких слов? Смотря по какой длинне считать! Если 3-х символьных, то 3 а если из 4 символов, то 2! Число символов вводится отдельно или смотрится по первой паре? -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Amro |
![]()
Сообщение
#6
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 146 Пол: Мужской Репутация: ![]() ![]() ![]() |
Oleg_Z Может имеется ввиду считать слова, которые встречаются в тексте более одного раза. К примеру такая строка, независимо от длины
""xxx xx x xx x xxx xxx xx xxxxx"" тыды кол-во тут равно 8..... Сообщение отредактировано: Amro - 17.10.2004 10:55 -------------------- Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь. Закон программиста: Семь раз отрежь, ошибся, отмерь. |
Altair |
![]()
Сообщение
#7
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
короче говоря тут не совсем ясно условие!
-------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
tigra |
![]()
Сообщение
#8
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Женский Репутация: ![]() ![]() ![]() |
В задаче этого не скозано, но по-моему кол-во букв(n) тоже вводится с клавиатуры.
Кажется, тут это можно сделать двумя циклами: один выделяет слова из текста Код until s[i]='.' ,а другой их считает Код if length(sl)=n then x:=x+1 .Кол-во слов неопределенное (сколько получится), так что я не знаю как их называть и отличать друг от друга... |
Amro |
![]()
Сообщение
#9
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 146 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата if length(sl)=n then x:=x+1 Это что такое ты написал??? sl Это что за строка?? Думаю так, если имеется ввиду кол-во букв в слове введённое с клавы, тады будет что то типа того Код var st:string; i,kol,kol_slov:byte; s:byte; begin readln(st); {сама вводимая строка} readln(kol_slov); {кол-во букв в слове} for i:=1 to length(st) do begin If st[i]<>' ' then inc(s) else if s=kol_slov then inc(kol); if st[i]=' ' then s:=0; end; if kol<2 then kol:=0;{если встречается один раз тады колич = 0} writeln(kol); end. Сообщение отредактировано: Amro - 17.10.2004 11:38 -------------------- Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь. Закон программиста: Семь раз отрежь, ошибся, отмерь. |
BlackShadow |
![]()
Сообщение
#10
|
Гость ![]() |
Я же это уже пиал где-то когда-то кому-то...
|
Флогримм |
![]()
Сообщение
#11
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 253 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата(Oleg_Z @ 17.10.04 7:11) Код var s:string; i:byte; sl:byte; begin readln(s); for i:=1 to length(s) do If s[i]=' ' then inc(sl); writeln(sl); end. Вот и вся прога. а как быть, если нет условия разделения слов символом пробела? что, если мы имеем строку вида 'xxxxxсловоxxxxxxxслово1xxxслово2xx', где x - пробел, как подсчитать кол-во слов в такой строке? Сообщение отредактировано: Pioneer - 19.10.2004 7:11 -------------------- Я не буду жить с этой злобой внутри / Я не буду частью смертельной цепи / Я не буду потребителем твоих идей / Я не буду никогда убивать зверей (Unconform)
|
Altair |
![]()
Сообщение
#12
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Сначала удали все лишние пробелы, отанется по одному разделяющему пробелу, затем применяй вышеукащанную схему. Элементарно, Ватсон
![]() -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
xds |
![]()
Сообщение
#13
|
![]() N337 ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата(Oleg_Z @ 19.10.04 7:31) Сначала удали все лишние пробелы Удалять слишком тяжело - лучше пропускать... -------------------- The idiots are winning.
|
Altair |
![]()
Сообщение
#14
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Удалять тяжело??
Чего сложного-то? Ну вобщем пропускать тоже можно. Тогда можно еще одну переменную логическую завести, и чуточку модернизировать алгоритм вышеуказанный ![]() -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Флогримм |
![]()
Сообщение
#15
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 253 Пол: Мужской Репутация: ![]() ![]() ![]() |
если удалять, получится что-то вроде вот этого
Код var s:string; i:byte; sl:byte; begin readln(s); while pos(' ',s)<>0 do delete(s,pos(' ',s),2); if s[1]=' ' then delete(s,1,1); if s[length(s)]=' ' then delete(s,10,1); writeln(s); for i:=1 to length(s) do If s[i]=' ' then inc(sl); writeln(sl+1); end. я думаю, что если в начале и конце строки нет пробелов, тогда кол-во слов в троке будет равно sl+1 т.к. пробелов всегда на один меньше -------------------- Я не буду жить с этой злобой внутри / Я не буду частью смертельной цепи / Я не буду потребителем твоих идей / Я не буду никогда убивать зверей (Unconform)
|
APAL |
![]()
Сообщение
#16
|
![]() Смотрю... ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: ![]() ![]() ![]() |
Вот, писал прогу давно и не помню уже для каких целей...
![]() STATIC.PAS - насколько я помню, подсчитывает статистику слов. Вроде бы считает количество повторений. Короче давно это было, но покапайтесь, может чего найдете... ![]() P.S.: Запаковано WinRar 3.30 Прикрепленные файлы ![]() -------------------- |
![]() ![]() |
![]() |
Текстовая версия | 26.07.2025 22:44 |