Вроде отвечал в похожую тему, но сейчас не могу найти. При условии, что текст задаётся одной строкой пользователем, задача решается так:
Код
const punctuation_marks=['.', ',', ';', ':', '?', '!']; { Знаки препинания }
var
input_text: string; { Входной текст }
i: integer; { параметр цикла }
punctuation_marks_count: integer; { Счётчик: количество знаков препинания в тексте }
begin
writeln('Введите текст, затем Enter:');
{ Пользователь вводит значение в переменную }
readln(input_text);
{ Изначально счётчик равен нулю. Пока ещё не посчитали ни одного знака }
punctuation_marks_count:=0;
{ i - номер символа в строке, от 1 до длины текста }
for i:=1 to length(input_text) do
{ input_text[i] - сам i-й символ строки }
{ если это символ присутствует среди массива символов знаков препинания... }
if input_text[i] in punctuation_marks
{ ...то увеличиваем счётчик на единицу }
then punctuation_marks_count:=punctuation_marks_count + 1;
{ выводим сообщение }
writeln('Количество знаков препинания в тексте: ', punctuation_marks_count, '. Нажмите Enter для выхода из программы.');
{ ожидаем нажатия Enter }
readln;
end.