Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
4 / 4 / 2
Регистрация: 04.04.2015
Сообщений: 186

Подсчитать количество знаков препинания в текстовом файле

12.04.2015, 17:32. Показов 3578. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Текст считывается из файла
Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Command1_Click()
 
Picture1.Cls
Open File1.Path + "\" + File1.FileName For Input As #1
Do While Not (EOF(1))
Input #1, Strtemp
Picture1.Print Strtemp
Loop
Close #1
End Sub
Как организовать подсчет знаков препинания? сколько мучаюсь ни как не получается
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.04.2015, 17:32
Ответы с готовыми решениями:

Подсчитать в тексте количество слов, букв и знаков препинания
Цикл контроля ввода на только русские буквы, допустимые знаки препинания:точка, запятая, точка с запятой и пробел. А вот само задание: Дано...

Подсчитать количество символов и знаков препинания в текстовом файле
Дан файл подсчитать количество всех символов и символов ,.!?

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

10
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
12.04.2015, 18:02
Если считать, что знаки препинания - это все символы, кроме букв, цифр и пробельных символов, то можно так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Command1_Click()
Dim Strtemp As String, n As Long
Picture1.Cls
Open File1.Path + "\" + File1.Filename For Input As #1
Strtemp = Input(LOF(1), 1)
Close #1
With CreateObject("vbscript.regexp")
  .Global = True
  .ignorecase = True
  .Pattern = "[0-9a-zа-яё\s]+"
  n = Len(.Replace(Strtemp, ""))
End With
Picture1.Print "Знаков препинания: " & n
End Sub
0
4 / 4 / 2
Регистрация: 04.04.2015
Сообщений: 186
12.04.2015, 18:12  [ТС]
выдает 0, хотя в тексте их около 20,
что это означает?
Visual Basic
1
2
3
4
5
6
With CreateObject("vbscript.regexp")
  .Global = True
  .ignorecase = True
  .Pattern = "[0-9a-zа-яё\s]+"
  n = Len(.Replace(Strtemp, ""))
End With
Добавлено через 48 секунд
кстати программа так же должна выводить сам текст файла, а вы эту функцию убрали, в файле около 20 строк
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
12.04.2015, 18:26
Цитата Сообщение от danilshik Посмотреть сообщение
выдает 0, хотя в тексте их около 20
В каком тексте? В моем тексте находит.
Цитата Сообщение от danilshik Посмотреть сообщение
что это означает?
http://www.script-coding.com/WSH/RegExp.html
Цитата Сообщение от danilshik Посмотреть сообщение
кстати программа так же должна выводить сам текст файла
А Вы об этом написали в первом посте?
Цитата Сообщение от danilshik Посмотреть сообщение
а вы эту функцию убрали
Добавьте обратно.
0
4 / 4 / 2
Регистрация: 04.04.2015
Сообщений: 186
12.04.2015, 18:55  [ТС]
вставил другой текст. но ваша программа считает количество символов в тексте а не знаки препинания, чтоб он считал только знаки препинания, нужно изменить вот эту строчку?
PureBasic
1
.Pattern = "[0-9a-zа-яё\s]+"
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
12.04.2015, 19:41
Обратите внимание на метод .Replace. Программа заменяет все перечисленные символы на пустую строку, чтобы оставить знаки препинания. Это проще, чем RegExp-ом находить знаки препинания и потом работать с коллекцией найденных. Пример:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Strtemp = "вставил другой текст. но ваша программа считает количество " & vbLf & _
  "символов в тексте а не знаки препинания, чтоб он считал только знаки" & vbCrLf & _
  " препинания, нужно изменить вот эту строчку?"
Debug.Print Strtemp
With CreateObject("vbscript.regexp")
  .Global = True
  .ignorecase = True
  .Pattern = "[0-9a-zа-яё\s]+"
Debug.Print ">>" & .Replace(Strtemp, "") & "<<"
  n = Len(.Replace(Strtemp, ""))
Debug.Print "Знаков препинания: " & n
End With
Результат в окне Immediate
Code
1
2
3
4
5
вставил другой текст. но ваша программа считает количество 
символов в тексте а не знаки препинания, чтоб он считал только знаки
 препинания, нужно изменить вот эту строчку?
>>.,,?<<
Знаков препинания: 4
0
4 / 4 / 2
Регистрация: 04.04.2015
Сообщений: 186
12.04.2015, 20:16  [ТС]
Кликните здесь для просмотра всего текста

все равно не считает, считает только количество знаков
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Command1_Click()
Dim Strtemp As String, n As Long
Picture1.Cls
Open File1.Path + "\" + File1.FileName For Input As #1
Strtemp = Input(LOF(1), 1)
Debug.Print Strtemp
Close #1
With CreateObject("vbscript.regexp")
  .Global = True
  .ignorecase = True
  .Pattern = "[0-9a-z?-??\s]+"
Debug.Print ">>" & .Replace(Strtemp, "") & "<<"
  
  n = Len(.Replace(Strtemp, ""))
  Debug.Print "Знаков препинания: " & n
End With
 
End Sub
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
12.04.2015, 20:18
дедовским способом без регулярок:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Комманда1_Click()
Dim Strtemp, ZN, i, L0, Lx
    ZN = ".,:;!?"
    Strtemp = "вставил другой текст. но ваша программа считает количество " & vbLf & _
      "символов в тексте а не знаки препинания, чтоб он считал только знаки" & vbCrLf & _
      " препинания, нужно изменить вот эту строчку?"
      L0 = Len(Strtemp)
      For i = 1 To Len(ZN)
        Strtemp = Replace(Strtemp, Mid(ZN, i, 1), "")
      Next
      Lx = Len(Strtemp)
      MsgBox Strtemp, 64, "Знаков препинания: " & L0 - Lx
End Sub
1
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
12.04.2015, 20:31
Цитата Сообщение от danilshik Посмотреть сообщение
.Pattern = "[0-9a-z?-??\s]+"
Исправьте - и переключайте на русскую раскладку, прежде чем копировать из браузера и из VBE.
0
4 / 4 / 2
Регистрация: 04.04.2015
Сообщений: 186
12.04.2015, 21:20  [ТС]
В этом тексте 14 знаков препинания
Кликните здесь для просмотра всего текста
Уфа - город в Российской Федерации, столица Республики Башкортостан,
административный центр городского округа город Уфа
и Уфимского муниципального района, в состав которого не входит.
Численность населения — 1 096 702 чел. Уфа — один из крупнейших
экономических, культурных, спортивных, научных и религиозных
центров России, важный транспортный узел.
В 2015 году примет саммиты Шанхайской организации сотрудничества и БРИКС.

Но программа выдает только 12

Добавлено через 24 секунды
использовал способ Alex77755

Добавлено через 35 секунд
PureBasic
1
ZN = ".,:;!?"
добавил еще -()
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
12.04.2015, 21:42
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Цитата Сообщение от danilshik Посмотреть сообщение
Но программа выдает только 12
Скопировал текст в файл, использовал этот код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Command1_Click()
Dim Strtemp As String, n As Long
  Open "c:\temp\Уфа.txt" For Input As #1
  Strtemp = Input(LOF(1), 1)
  Close #1
Debug.Print Strtemp
  With CreateObject("vbscript.regexp")
    .Global = True
    .ignorecase = True
    .Pattern = "[0-9a-zа-яё\s]+"
Debug.Print ">>" & .Replace(Strtemp, "") & "<<"
    n = Len(.Replace(Strtemp, ""))
Debug.Print "Знаков препинания: " & n
  End With
End Sub
Получил
Code
1
2
3
4
5
6
7
8
9
Уфа - город в Российской Федерации, столица Республики Башкортостан, 
административный центр городского округа город Уфа
и Уфимского муниципального района, в состав которого не входит.
Численность населения — 1 096 702 чел. Уфа — один из крупнейших
экономических, культурных, спортивных, научных и религиозных 
центров России, важный транспортный узел. 
В 2015 году примет саммиты Шанхайской организации сотрудничества и БРИКС.
>>-,,,.—.—,,,,..<<
Знаков препинания: 14
Если у Вас не так - ну, значит, не судьба
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.04.2015, 21:42
Помогаю со студенческими работами здесь

Вычислить количество знаков препинания в текстовом файле
Помогите, эту тему вообще не знаю, как с ней работать. Нужно вычислить количество знаков препинания в текстовом файле (текст с клавиатуры...

Определить число знаков препинания в текстовом файле
Доброго времени суток! Дан текстовый файл, определить число знаков препинания, используемых в строке. program probel; var ...

В текстовом файле подсчитать знаки препинания
Вот мои наброски, но мне выводит кол-во всех знаков! #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int main() {...

Подсчитать количество знаков препинания в строке.
Подсчитать количество знаков препинания в строке.

Подсчитать количество знаков препинания в строке
Подсчитать количество знаков препинания в строке. Строка - &quot;Осень,,Падают листья,,зима,,!&quot;. Вывести строку на экран и количество...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru