вопрос, строки |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
вопрос, строки |
-Даша- |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 12 Пол: Женский Репутация: 0 |
Ввести 2 строки (это я знаю как делать), найти кол-во слов (это тоже вроде умею) и
найти кол-во одинаковых слов (КАК?) |
Sozialist |
Сообщение
#2
|
Клавиатурный тиран Группа: Пользователи Сообщений: 79 Пол: Мужской Реальное имя: Дмитрий Репутация: -2 |
Можно использовать следующую структуру:
type Алгоритм: Выделяем 1 слово, записываем в ms[i].word, inc(ms[i].count). Выделяем 2 слово, если одно совпадает с каким нибудь ms[j].word, то делаем inc(ms[j].count), в противном случае делаем так же, как с первым словом. В конце концов имеем массив записей, который считает кол-во всех слов. Если ms[i].count>1, то ms[i].word является повторяющимся словом с кол-вом повторений ms[i].count. Может кто предложит более мощный вариант с меньшей затратой памяти, ибо я использовал ее безжалостно. |
-Даша- |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 12 Пол: Женский Репутация: 0 |
Можно использовать следующую структуру: type Алгоритм: Выделяем 1 слово, записываем в ms[i].word, inc(ms[i].count). Выделяем 2 слово, если одно совпадает с каким нибудь ms[j].word, то делаем inc(ms[j].count), в противном случае делаем так же, как с первым словом. В конце концов имеем массив записей, который считает кол-во всех слов. Если ms[i].count>1, то ms[i].word является повторяющимся словом с кол-вом повторений ms[i].count. Может кто предложит более мощный вариант с меньшей затратой памяти, ибо я использовал ее безжалостно. Что-то сложновато, а можно ещё раз и по пунктам? Ну, например, вот как прописать следующее: 1)находим слова 2)записываем найденные слова в отдельные массивы (а если этих слов много, то что делать?) 3)сравниваем полученные массивы со словами 4)находим кол-во одинаковых слов 5)выводим результат (сколько одинаковых слов было найдено) |
volvo |
Сообщение
#4
|
Гость |
Любым способом отсюда: Разбиение на слова. Все способы. разбиваешь обе строки на слова, и потом проходишь по одному массиву (или списку, что ты там выберешь), и проверяешь, есть ли текущее слово во втором массиве (или списке). Если есть - то увеличиваешь счетчик, и переходишь к след. слову в первой последовательности...
|
-Даша- |
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 12 Пол: Женский Репутация: 0 |
function Count(Const s, w: String; start: Byte): Byte;
const limits = ['.', ',', ';', '!', '?', ' ']; var p: Byte; begin p:= Pos(w, Copy(s, start, 255)); if (start > length(s)) or (p = 0) then Count := 0 else if (((start + p - 2) = 0) or (s[ start + p - 2] in limits)) and (((start + p + length(w) - 2) = Length(s)) or (s[start + p + length(w) - 1] in limits)) then Count := 1 + Count(s, w, start + p + length(w) - 2) else Count := 0 + Count(s, w, start + p + length(w) - 2); end; begin writeln(count('papa mama i doch mili mili papu s mamoi mama', 'mili',1)); readln; end. Вот программка, которая находит кол-во одинаковых слов. У меня такой вопрос: как её изменить так, чтобы: 1)можно было вводить строку не вот здесь: writeln(count('papa mama i doch mili mili papu s mamoi mama', 'mili',1)); , а во время выполнения самой программы 2)чтобы она искала не заданные слова, а искала слова сама и выводила их кол-во writeln(count('papa mama i doch mili mili papu s mamoi mama', 'mili',1)); |
Sozialist |
Сообщение
#6
|
Клавиатурный тиран Группа: Пользователи Сообщений: 79 Пол: Мужской Реальное имя: Дмитрий Репутация: -2 |
2 требование разрушает данный тобой код. Еще раз см. сообщения номер 2 и 4. Это то, что тебе нужно.
А вводить строку во время программы просто: Var Если этого не знаешь, то как собираешься решать задачу? Давай читай теорию. |
Текстовая версия | 29.03.2024 15:02 |