Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
Vol4_OK
2 / 2 / 1
Регистрация: 11.09.2013
Сообщений: 85
1

Посчитать число слов в предложении, заканчивающихся на заданную букву

18.11.2013, 23:04. Просмотров 2806. Ответов 5
Метки нет (Все метки)

Посчитать число слов в предложении, заканчивающихся на заданную букву.
Собственно, вот. Через строки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2013, 23:04
Ответы с готовыми решениями:

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

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

Подсчитать, какой процент слов в предложении начинается на заданную букву
Подсчитать , какой процент слов в предложении начинается на заданную букву .

Подсчитать количество слов в текстовом файле, заканчивающихся на заданную букву
Создать в программе Блокнот текстовый файл. Написать программу, которая...

Функция: вернуть количество слов, заканчивающихся на согласную букву
функция countsoglend(f:text):word возвращает количество слов, заканчивающихся...

5
Cyborg Drone
Модератор
5296 / 3175 / 2442
Регистрация: 17.08.2012
Сообщений: 10,189
19.11.2013, 03:36 2
Vol4_OK, а... Сами... Что же? Это проще пареной репы, нет, даже проще сырой репы (она как раз проще пареной репы).
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
program wend;
 
var s: string;
    c: char;
    i, n: integer;
 
begin
  n := 0;
  writeln('Enter string:');
  readln(s);
  s := s + ' ';
  write('Enter letter: ');
  readln(c);
  for i := 1 to length(s) - 1 do if (s[i] = c) and (s[i + 1] = ' ') then n := n + 1;
  writeln('Count of "', c, '"-ended words: ', n);
  readln
end.
1
Vol4_OK
2 / 2 / 1
Регистрация: 11.09.2013
Сообщений: 85
19.11.2013, 08:12  [ТС] 3
А зачем в конец добавлять пробел? PS: я знаю что проще, но запутался в алгоритме. Делал почти так-же, но выдавались различные ошибки, например: Выход за рамки массива или что and нельзя использовать с char и string.

Добавлено через 8 минут


Спасибо большое, это действительно легко. Я не так понял задание и искал слова, где вообще есть заданная буква, а это, согласитесь, труднее.
0
Cyborg Drone
Модератор
5296 / 3175 / 2442
Регистрация: 17.08.2012
Сообщений: 10,189
19.11.2013, 12:28 4
Цитата Сообщение от Vol4_OK Посмотреть сообщение
зачем в конец добавлять пробел?
Для упрощения алгоритма. В данном случае за конец нужного слова считаем подряд идущие нужную букву и пробел. А у последнего слова в предложении это может быть и не так. Вот и делаем - безобразно, но однообразно.

О. Кстати. Сейчас дотумкал. У программы есть недостаток - если в конце нужного слова стоит знак препинания, слово не лоцируется. Исправляется просто: удалением из строки знаков препинания. Так подрихтовать: После
Pascal
1
  readln(s);
добавить это самое удаление:
Pascal
1
2
3
  for i := length(s) downto 1 do
    if s[i] in ['.', ',', '!', '?', ':', ';', '"', '(', ')', '''']
      then delete(s, i, 1);
Другие знаки препинания в множество можно добавить по желанию.

"downto" здесь чтобы не вылететь за пределы строки - границы цикла for считаются один раз при вхождении в цикл, и если было бы "1 to length(s)", то, так как при хотя бы одном удалении из строки укорачивается её длина, а, следовательно, уменьшается номер последнего символа (как раз length(s)), в конце строки произойдёт выход за границы индексов массива. Поэтому и "downto": номер первого символа по определению 1.

Добавлено через 44 минуты
Можно ещё считать концом нужного слова подряд идущие нужная буква и знак препинания либо пробел. Тогда удаление добавлять не надо, а вместо
Pascal
1
  for i := 1 to length(s) - 1 do if (s[i] = c) and (s[i + 1] = ' ') then n := n + 1;
написать
Pascal
1
2
3
  for i := 1 to length(s) - 1 do
    if (s[i] = c) and (s[i + 1] in [' ', '.', ',', '!', '?', ':', ';', '"', '(', ')', ''''])
      then n := n + 1;
0
Vol4_OK
2 / 2 / 1
Регистрация: 11.09.2013
Сообщений: 85
20.11.2013, 17:56  [ТС] 5
Спасибо)

Добавлено через 1 минуту
Как бы посчитать кол-во слов, в которых есть буква n... Это труднее.
0
Cyborg Drone
Модератор
5296 / 3175 / 2442
Регистрация: 17.08.2012
Сообщений: 10,189
20.11.2013, 21:55 6
Цитата Сообщение от Vol4_OK Посмотреть сообщение
Спасибо)
Для этого есть кнопочка "+1 спасибо".
Цитата Сообщение от Vol4_OK Посмотреть сообщение
Как бы посчитать кол-во слов, в которых есть буква n... Это труднее.
Нисколько не труднее. Переделывается из уже написанного. И, чтобы не нарушать правило форума
5. 16. Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема.
в следующий раз создавайте новую тему, а в данной теме в оффтопе пишете просьбу и указываете ссылку на новую тему. Вот:
Pascal
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
program letter;
 
var s, w: string;
    c: char;
    i, n: integer;
 
begin
  n := 0;
  writeln('Enter string:');
  readln(s);
  s := s + ' ';
  write('Enter letter: ');
  readln(c);
  while pos('  ', s) > 0 do delete(s, pos('  ', s), 1); //оставляем по одному пробелу
  while pos(' ', s) > 0 do //пока не кончатся слова
    begin
      w := copy(s, 1, pos(' ', s)); //копируем слово в буфер
      delete(s, 1, pos(' ', s)); //удаляем слово из строки
      for i := 1 to length(w) do //просматриваем слово, ищем букву
        if w[i] = c then //если буква есть,
          begin
            n := n + 1; //счётчик слов + 1
            break //и прекращаем просматривать слово
          end
    end;
  writeln('Count of words, contained letter "', c, '": ', n);
  readln
end.
1
20.11.2013, 21:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2013, 21:55

Дана строка. Определить, сколько в ней слов начинающихся и заканчивающихся на букву k?
Дана строка. Определить, сколько в ней слов начинающихся и заканчивающихся на...

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

Дан фаил содержащий текст подсчитать количество слов начинающихся и заканчивающихся на одну и туже букву
Блин вообще ребят срочно нужно!!!!! завтро здавать на зачете! и конец...


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

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

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