Форум Академгородка, Новосибирск > Помогите с задачей в Паскале
Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите с задачей в Паскале
Форум Академгородка, Новосибирск > Компьютеры и сети > Программирование
Илья П.
Как создать программу подсчитывающую колличество знаков препинания в тексте?В паскале плохо все понимаю.Попрошу,если не сложно,расписать программу с пояснениями.Заранее спасибо.
lost_shadow
Вроде отвечал в похожую тему, но сейчас не могу найти. При условии, что текст задаётся одной строкой пользователем, задача решается так:

Код
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.
Илья П.
Спасибо большое!
ilsy
Цитата(lost_shadow @ 17.01.2013, 18:58) *
Вроде отвечал в похожую тему, но сейчас не могу найти. При условии, что текст задаётся одной строкой пользователем, задача решается так:

Код
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.


Вы так добры . . . unsure.gif
lost_shadow
Вовсе нет. Я зол и циничен. Просто считаю, что если человек не знает, как подойти к решению такой тривиальной задачи, то он её и не сделает, а возьмёт и спишет у соседа. А поскольку всё равно спишет, то пусть уж берёт вариант с комментариями, ибо в таком решении, надеюсь, легко разобраться. Тогда есть хороший шанс, что следующую задачу студент уже сможет сделать самостоятельно.
ailexxs
Цитата(lost_shadow @ 22.01.2013, 17:25) *
Вовсе нет. Я зол и циничен. Просто считаю, что если человек не знает, как подойти к решению такой тривиальной задачи, то он её и не сделает, а возьмёт и спишет у соседа. А поскольку всё равно спишет, то пусть уж берёт вариант с комментариями, ибо в таком решении, надеюсь, легко разобраться. Тогда есть хороший шанс, что следующую задачу студент уже сможет сделать самостоятельно.


Мой сын когда увидел Ваши комментарии сказал с восторгом:" Нам бы учитель ТАК объяснял!" И благодаря Вам он понял как решаються подобные задачи. Они с товарищем перерешали множество задач после этого, готовясь к экзамену. И сдал затем его успешно. Спасибо Вам.
Dunkel
Цитата(ailexxs @ 01.02.2013, 11:01) *
Цитата(lost_shadow @ 22.01.2013, 17:25) *
Вовсе нет. Я зол и циничен. Просто считаю, что если человек не знает, как подойти к решению такой тривиальной задачи, то он её и не сделает, а возьмёт и спишет у соседа. А поскольку всё равно спишет, то пусть уж берёт вариант с комментариями, ибо в таком решении, надеюсь, легко разобраться. Тогда есть хороший шанс, что следующую задачу студент уже сможет сделать самостоятельно.


Мой сын когда увидел Ваши комментарии сказал с восторгом:" Нам бы учитель ТАК объяснял!" И благодаря Вам он понял как решаються подобные задачи. Они с товарищем перерешали множество задач после этого, готовясь к экзамену. И сдал затем его успешно. Спасибо Вам.

Это школьная задача?
Антип Од
А вапще, не такая бесполезная задача! Если считать не общее количество знаков препинания, а отдельно относительное количество запятых, относительное количество точек и т.д., то получим некий вектор, который характеризует стиль изложения. Очень может быть, что такой вектор будет иметь характерные значения, например, для прозы, поэзии, технической документации. А то и для разных авторов. Вопрос, насколько характерное? Может быть, можно автоматически отличать тексты Толстого от текстов Достоевского?
ZuzEL
Цитата(Антип Од @ 22.02.2013, 9:54) *
А вапще, не такая бесполезная задача! Если считать не общее количество знаков препинания, а отдельно относительное количество запятых, относительное количество точек и т.д., то получим некий вектор, который характеризует стиль изложения. Очень может быть, что такой вектор будет иметь характерные значения, например, для прозы, поэзии, технической документации. А то и для разных авторов. Вопрос, насколько характерное? Может быть, можно автоматически отличать тексты Толстого от текстов Достоевского?

Интересная мысль supdup.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2024 IPS, Inc.