Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
 Аватар для avabnic
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 16
1

Описать рекурсивную функцию letter (s), которая подсчитывает количество букв в строке

28.05.2012, 16:57. Показов 4934. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Описать рекурсивную функцию letter(s), которая
подсчитывает количество букв в строке s.

Добавлено через 42 секунды
помогите пожалуйста!!!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.05.2012, 16:57
Ответы с готовыми решениями:

Описать рекурсивную функцию, которая подсчитывает количество букв в строке
Здравствуйте, не могли бы кто нибудь помочь с двумя задачами. P.S. прошу прощения что нарушил правила и выложил две задачи в одной теме, но...

Описать рекурсивную функцию digits (s), которая подсчитывает сумму цифр в строке s
Здравствуйте! Условие задачи: Описать рекурсивную функцию digits (s), которая подсчитывает сумму цифр в строке s.

Описать рекурсивную функцию letter(s), которая подсчитывает количество букв в строке s
Описать рекурсивную функцию letter(s), которая подсчитывает количество букв в строке s. Преподаватель сказал, что внутри должно быть...

9
Почетный модератор
 Аватар для Puporev
64306 / 47603 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
28.05.2012, 21:35 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
program abc;
uses crt;
const bk=['A'..'Z','a'..'z','А'..'я','ё','Ё'];
function letters(s:string;i:integer):integer;
var k:integer;
begin
if s[i] in bk then inc(k);
if i<length(s) then k:=k+letters(s,i+1);
letters:=k;
end;
var s:string;
begin
writeln('Введите строку:');
readln(s);
write('Количество букв=',letters(s,1))
end.
1
 Аватар для avabnic
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 16
28.05.2012, 21:37  [ТС] 3
спасибо большое)))
0
0 / 0 / 0
Регистрация: 19.11.2015
Сообщений: 64
18.02.2016, 19:04 4
Pascal
1
2
3
if s[i] in bk then inc(k);
if i<length(s) then k:=k+letters(s,i+1);
letters:=k;
Можете пожалуйста объяснить смысл этих трех строчек? Заранее спасибо.
0
Почетный модератор
 Аватар для Puporev
64306 / 47603 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
18.02.2016, 19:14 5
Pascal
1
2
3
if s[i] in bk then inc(k);//если s[i] буква то считаем(начинаем с первой буквы letters(s,1))
if i<length(s) then k:=k+letters(s,i+1);//если не конец строки, проверяем следующую
letters:=k;//значение функции равно количеству букв.
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
37642 / 20890 / 4285
Регистрация: 12.02.2012
Сообщений: 34,337
Записей в блоге: 14
18.02.2016, 20:37 6
или так (без доп. параметров):

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
Function num_lett(s : string) : integer;
Var l : integer;
Begin
      l:=length(s);
      if l=0 then
         num_lett:=0
      else
         if s[1] in bk then
            num_lett:=1+num_lett(copy(s,2,l))
         else
            num_lett:=num_lett(copy(s,2,l));
End;
0
3408 / 1827 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
19.02.2016, 12:09 7
Цитата Сообщение от Catstail Посмотреть сообщение
без доп. параметров
Тогда так:
Pascal
1
2
3
4
5
6
7
8
function F(a:string):integer;
  begin
    if a<>'' then
      begin
        delete(a,1,1);
        F:=F(a)+1;
      end;
  end;
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33090 / 21387 / 8216
Регистрация: 22.10.2011
Сообщений: 36,714
Записей в блоге: 9
19.02.2016, 12:12 8
Цитата Сообщение от Constantin Cat Посмотреть сообщение
Тогда так:
Это не считает количество букв, считает количество символов. Разные вещи.

Не знаю, позволяет ли это PABC (я про ord), нормальные компиляторы должны пропускать:
Pascal
1
2
3
4
5
6
7
Function num_lett(s : string) : integer;
Var l : integer;
Begin
  l:=length(s);
  if l=0 then num_lett:=0
  else num_lett := ord(s[1] in bk) + num_lett(copy(s,2,l));
End;
1
3408 / 1827 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
19.02.2016, 13:09 9
Цитата Сообщение от volvo Посмотреть сообщение
позволяет ли это PABC (я про ord)
Он это нелюбит
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
37642 / 20890 / 4285
Регистрация: 12.02.2012
Сообщений: 34,337
Записей в блоге: 14
19.02.2016, 13:44 10
Constantin Cat, так (с очевидной поправкой) тоже можно. Но интересно выяснить, что быстрее: delete или copy. Впрочем, для строк длины до 256 симв. это не важно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.02.2016, 13:44
Помогаю со студенческими работами здесь

Описать рекурсивную функцию, которая подсчитывает количество латинских букв в тексте
Описать рекурсивную функцию abc, которая подсчитывает количество латинских букв в тексте. Текст завершается точкой #include...

Описать рекурсивную функцию abc, которая подсчитывает количество латинских букв в тексте
Описать рекурсивную функцию abc, которая подсчитывает количество латинских букв в тексте. Текст завершается точкой.

Описать рекурсивную функцию, которая подсчитывает количество знаков препинания в строке
Описать рекурсивную функцию sign (s), которая подсчитывает количество знаков препинания в строке s (знаки: '.', ',', ';', ':').

Описать рекурсивную функцию skv, которая подсчитывает количество квадратных скобок в тексте
Описать рекурсивную функцию skv, которая подсчитывает количество квадратных скобок (открывающих и закрывающих) в тексте. Текст завершается...

Описать рекурсивную функцию digits без параметров, которая подсчитывает количество цифр в тексте
Описать рекурсивную функцию digits без параметров, которая подсчитывает количество цифр в тексте, заданном во входном файле (за текстом...


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
std::mutex в C++: Хитрости и тонкости использования
Wired 03.03.2025
В C++ ключевым инструментом для обеспечения корректной работы параллельных процессов выступает std::mutex – примитив синхронизации, появившийся в стандарте C++11. До его появления использовали. . .
std::span в C++: Производительно­сть и практическое использование
Wired 03.03.2025
Традиционная работа с указателями и массивами часто приводит к ошибкам и уязвимостям в безопасности. Именно поэтому в C++20 появился std::span - легковесная обертка, обеспечивающая безопасный. . .
std::span в C++: Константность и безопасность типов
Wired 03.03.2025
std::span - представитель семейства view-типов, появившийся в стандарте C++20. Этот компонент предоставляет легковесное и эффективное решение для работы с непрерывными последовательностями данных,. . .
std::span в C++: Subview и Slice
Wired 03.03.2025
std::span - невладеющий тип данных C++, который предоставляет гибкий интерфейс для работы с непрерывными последовательностями элементов. Этот тип существенно упрощает обработку массивов и. . .
std::span в C++: Доступ к элементам и итерирование
Wired 03.03.2025
Появление std::span в стандарте C++20 стало значительным шагом вперед, предоставив разработчикам средство для безопасного и производительного доступа к непрерывным последовательностям элементов. . . .
std::span в C++: Управление массивами данных без владения
Wired 03.03.2025
Новый класс std::span, появившийся в стандарте C++20, открывает возможности для оптимизации работы с последовательными наборами данных. По сути, это легковесная обертка, которая предоставляет доступ. . .
Неблокируемый стек в C++26: реализуем простой сборщик мусора
stackOverflow 02.03.2025
Многопоточные приложения требуют надежных и производительных структур данных, способных эффективно работать в условиях конкурентного доступа. Неблокируемые структуры данных представляют собой особый. . .
Шаблон REQ/REP в ZeroMQ: сверхбыстрый обмен сообщениями в C++ и Python
stackOverflow 02.03.2025
Построение высоконагруженных распределенных систем требует надежного и производительного механизма обмена сообщениями. ZeroMQ выделяется среди прочих решений своей невероятной скоростью работы и. . .
Нестандартные приемы работы с итераторами в C++
stackOverflow 02.03.2025
Итераторы - один из краеугольных камней C++, предоставляющий универсальный механизм обхода и манипуляции данными в контейнерах. Появившись как замена небезопасным указателям, они эволюционировали от. . .
Лексический анализ и регулярные выражения в C++26
stackOverflow 02.03.2025
Лексический анализ - ядро любого компилятора и инструмента обработки текста. Каждый программист сталкивается с задачами парсинга строк, обработки файлов конфигурации или анализа пользовательского. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru