0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 8
1

Напечатать те слова, которые удовлетворяют условию: "каждая буква входит в него более двух раз"

06.07.2016, 21:24. Показов 470. Ответов 5
Метки нет (Все метки)

Данная последовательность слов , напечатать те слова которые удовлетворяют условию: каждая буква входит в него более двух раз

Добавлено через 1 час 20 минут
???
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.07.2016, 21:24
Ответы с готовыми решениями:

Напечатать те слова последовательности, которые отличны от последнего слова и каждая буква входит в слово не менее двух раз
Прошу помощи с написанием программы без использования функций и записей. Задача такая: Дана...

Напечатать слова, в которых каждая буква входит не менее двух раз
Составить программу для розвязання задачи. Дана последовательность, содержащая от 1 до 30 слов, в...

Определить, имеются ли в последовательности слова, в которых каждая буква слова входит в него не менее двух раз
Есть задача, никак не могу разобраться, помогите пожалуйста реализовать)) Определить, имеются ли...

Напечатать те слова, которые отличны от первого слова и предпоследняя буква слова входит в в него еще раз
Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных...

5
422 / 355 / 127
Регистрация: 09.09.2011
Сообщений: 1,275
06.07.2016, 22:06 2
задача примитивная - в чем у вас проблема? в чем именно нужна помощь?
0
0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 8
06.07.2016, 22:51  [ТС] 3
у меня проблема со созданиям условия для проверки вхождения букв в слово
0
422 / 355 / 127
Регистрация: 09.09.2011
Сообщений: 1,275
07.07.2016, 00:37 4
ну ответьте на 2 вопроса:

1. какая версия delphi?
2. в словах только латиница, или есть и кириллица?
0
3868 / 3295 / 862
Регистрация: 29.08.2013
Сообщений: 21,597
Записей в блоге: 2
07.07.2016, 00:44 5
последовательность делите на слова в StringList
далее для каждого слова
запоминаете размер R1
берете очередную букву и через StringReplace заменяете ее на пустоту
Запоминаете размер R2
если R1-R2>=2 то значит таких букв две, значит слово оставляем
0
422 / 355 / 127
Регистрация: 09.09.2011
Сообщений: 1,275
07.07.2016, 01:18 6
итак, как я вижу - разбивка предложения на слова не является проблемой, тогда пишем функцию проверки слова.

1. исходим из того, что каждый символ занимает 1 байт и в строке к символам можно обращаться через [] (для последних версий delphi это не работает!) и в словах только латиница:
Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
program check_word;
 
//{$mode objfpc}{$H+}
 
uses
  Classes, sysutils;
 
//на входе получаем слово, если каждая буква слова имеет более 2-х вхождений - возвращаем True
//иначе False
function check_word(a: String): Boolean;
var
  len, i: integer;
  chars: array[ord('a')..ord('z')] of integer;
begin
 
  Result:= False;
  len:= Length(a);
 
  if len < 2 then exit;
 
  //инициализация массива вхождений
  for i:= low(chars) to high(chars) do
      chars[i]:= 0;
 
  a:= LowerCase(a);
  //заполняем массив вхождений каждой встреченной буквы
  for i:= low(a) to high(a) do
    inc(chars[ord(a[i])]);
  //проверим условия, если хоть одна буква имеет 1 вхождение, то условие не выполнено
  for i:= low(chars) to high(chars) do
    if chars[i] = 1 then Exit;
 
  //если дошли до сюда - значит слово то, что надо!
  Result:= true;
 
end;
 
var
  test1: string = 'ababababababafdfd'; // верное
  test2: string = 'a'; //не верное
  test3: string = 'aba'; //не верное
  test4: string = 'AbaBababababafdfdDDDD'; // верное
  test5: string = 'SSSSSS'; // верное
begin
  writeln('Expected TRUE, we have: ', check_word(test1));
  writeln('Expected FALSE, we have: ', check_word(test2));
  writeln('Expected FALSE, we have: ', check_word(test3));
  writeln('Expected TRUE, we have: ', check_word(test4));
  writeln('Expected TRUE, we have: ', check_word(test5));
  readln;
end.


Тут функция проверки слов и небольшой тест, что все работает.

Добавлено через 15 минут
ой не правильно прочитал задание. предыдущая программа проверят слова на вхождение каждой буквы 2 и более раз.

ниже проверка как в условии: "входит в него более двух раз"
тесты тоже подправлены:

Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
program check_word;
 
//{$mode objfpc}{$H+}
 
uses
  Classes, sysutils;
 
//на входе получаем слово, если каждая буква слова имеет более 2-х вхождений - возвращаем True
//иначе False
function check_word(a: String): Boolean;
var
  i: integer;
  chars: array[ord('a')..ord('z')] of integer;
begin
 
  Result:= False;
 
 
  if Length(a) < 3 then exit;
 
  //инициализация массива вхождений
  for i:= low(chars) to high(chars) do
      chars[i]:= 0;
 
  a:= LowerCase(a);
  //заполняем массив вхождений каждой встреченной буквы
  for i:= low(a) to high(a) do
    inc(chars[ord(a[i])]);
  //проверим условия, если хоть одна буква имеет мене 3 вхождений, то условие не выполнено
  for i:= low(chars) to high(chars) do
    if chars[i] in  [1, 2] then Exit;
 
  //если дошли до сюда - значит слово то, что надо!
  Result:= true;
 
end;
 
var
  test1: string = 'ababababababafdfdfd'; // верное
  test2: string = 'aabb'; //не верное
  test3: string = 'ababa'; //не верное
  test4: string = 'AbaBababababafdfdfDDDD'; // верное
  test5: string = 'SSSSSS'; // верное
begin
  writeln('Expected TRUE, we have: ', check_word(test1));
  writeln('Expected FALSE, we have: ', check_word(test2));
  writeln('Expected FALSE, we have: ', check_word(test3));
  writeln('Expected TRUE, we have: ', check_word(test4));
  writeln('Expected TRUE, we have: ', check_word(test5));
  readln;
end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.07.2016, 01:18

Строка: вывести слова, в которые каждая буква входит не менее двух раз
Ввести строку. Вывести слова, в которых каждая буква входит не менее двух раз.

Вывести из строки слова, в которые каждая буква входит не менее двух раз
Напишите,пожалуйста,программу на С. Ввести строку. Вывести слова, в которых каждая буква входит не...

Напечатать те слова последовательности, которые отличны от последнего слова и первая буква слова входит в него еще раз
Всем привет, такая задача: Дана последовательность слов, между соседними словами - не менее одного...

Нати все слова, в которых буква "а" входит не менее двух раз
Добры день уважаемые форумчане! Помогите пожалуста с задаче(если не сложно то объясните листинг)....

Найти все слова, в которых буква "а" входит не менее двух раз
Дан текст. Найти все слова, в которых буква &quot;а&quot; входит не мее двух раз. Дан текст. Найти самую...

Найти все такие группы букв, в которые буква "а" входит не менее двух раз.
нужно из монотонного набора символов в строке вытащить в массив все слова состоящие только из букв...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.