Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/75: Рейтинг темы: голосов - 75, средняя оценка - 4.65
33 / 33 / 43
Регистрация: 07.02.2014
Сообщений: 89
1

Программа для подсчета количества букв в строке!

07.02.2014, 23:59. Показов 15693. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как на Турбо Паскале написать программу для подсчета всех русских букв используемых в написанной строке.
например Текст = сегодня днём над городом прошел дождь
программа должна уметь сама подсчитывать количество каждой буквы в строке и выводить ответ на экран по каждой букве.
Выводимое сообщение может быть сделано в таком виде :

Букв с = 1
Букв е = 2
Букв г = 2
Букв о = 6
Букв д = 6
Букв н = 3
Букв я = 1
Букв ё = 1
Букв м = 2
Букв п = 1
Букв р = 2
Букв а = 1
Букв ж = 1
Букв ь = 1

Добавлено через 1 час 4 минуты
Выкладываю ссылку на тему в которой я нашёл на форуме ответ на свой вопрос

https://www.cyberforum.ru/pascalabc/thread1000448.html

Код программы который я нашёл размещу здесь

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Program HD;
uses crt;
var
s:string; //строка
x:integer; //счетчик для цикла
abc: array [0..255] of integer; //таблица количества использований символов
Begin
clrscr;
writeln('Введите текст: ');
readln(s); //cчитываем текст
For x:=1 to 255 do abc[x]:=0; //обнуляем счетчик букв
For x:=1 to length(s)do //перебираем все символы в строке
begin
if ((s[x]>='а') and (s[x]<='я')) //если символ принадлежит кирилице
then abc[ord(s[x])]:=abc[ord(s[x])]+1; //тогда в массив алфавита для соответствующего символа увеличиваем счетчик
end;
For x:=32 to 255 do if abc[x]>0 then writeln('буква "',chr(x),'" встречается ',abc[x],' раз(а)'); //теперь для всех элементов алфавита начиная с пробела выводим количество их использования, если оно не нулевое
End. //финита ля программа
После тестирования программы обнаружил что в ней есть один недочёт, она не учитывает букву "ё"
Для устранения этого недостатка я добавил в код ещё одну строку под номером 15

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Program consider_letter;
uses crt;
var
s:string; //строка
x:integer; //счетчик для цикла
abc: array [0..255] of integer; //таблица количества использований символов
Begin
clrscr;
writeln('Введите текст: ');
readln(s); //cчитываем текст
For x:=1 to 255 do abc[x]:=0; //обнуляем счетчик букв
For x:=1 to length(s)do //перебираем все символы в строке
begin
if ((s[x]>='а') and (s[x]<='я')) //если символ принадлежит кирилице
or (s[x]='ё')        //эта строка нужна для учёта буквы "ё"
then abc[ord(s[x])]:=abc[ord(s[x])]+1; //тогда в массив алфавита для соответствующего символа увеличиваем счетчик
end;
For x:=32 to 255 do if abc[x]>0 then writeln('буква "',chr(x),'" встречается ',abc[x],' раз(а)'); //теперь для всех элементов алфавита начиная с пробела выводим количество их использования, если оно не нулевое
End.  // Конец программы
Теперь программа полностью учитывает все русские буквы в строке.
Большущее спасибо автору за написание полезной программы!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.02.2014, 23:59
Ответы с готовыми решениями:

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

Программа для подсчета количества цифр в строке
С клавиатуры вводится строка. Составить программу, которая подсчитывает количество цифр в тексте;...

Программа подсчёта количества символов, букв, слов и предожений
Нужно написать программу 1) Имя передаётся через командную строку 2) Программа должна...

Программа поиска и подсчета количества вхождений символа в строке
разработать программу поиска и подсчета количества вхождений символа 'h' в строке 'Conditions test...

7
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
08.02.2014, 00:53 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
Const RusChar = ['А'..'Я','а'..'п','р'..'я','Ё','ё'];
Var
  m  : array[0..255] of Longint;
  i  : Byte;
  St : String;
Begin
  For i:=0 to 255 do m[i]:=0;
  {Readln(St);} St:='сегодня днём над городом прошел дождь';
  For i:=1 to Length(St) do If St[i] in RusChar then Inc(m[Ord(St[i])]);
  For i:=0 to 255 do If m[i]<>0 then Writeln(Chr(i),' - ',m[i]);
End.
1
33 / 33 / 43
Регистрация: 07.02.2014
Сообщений: 89
08.02.2014, 02:22  [ТС] 3
Спасибо, APALoff-у за иной подход к написанию программы которая подсчитывает количество каждой буквы в строке.
Программу переписал в турбо паскаль и запустил. Программа подсчет каждой буквы проводит и результат отображает. В программу добавил
  • процедуру clrscr из модуля CRT,
  • строчку с вводом любого текста для подсчета буковок,
  • добавил команду Readln; чтобы окно с результатами были видно после отработки программы,
  • и немного изменил вывод результата на экран добавив в него немного текста.
К сожалению не удалось сразу разобраться как работают операторы цикла между командами Begin и End.
Над их пониманием и осмыслением придётся поломать голову не один день.
Ещё не понял откуда взялась константа RusChar и почему алфавит поделен на две части . В первой части перечисляются буквы от а до п, а во второй части буквы от р до я. И почему этого не происходит в случае с заглавными буквами.


Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Program consider_letter;
uses crt;
Const RusChar = ['А'..'Я','а'..'п','р'..'я','Ё','ё'];
Var
  m  : array[0..255] of Longint;
  i  : Byte;
  St : String;
Begin
  clrscr;
  For i:=0 to 255 do m[i]:=0;
  Writeln('Напишите текст для подсчёта букв');
  ReadLn(St);
  For i:=1 to Length(St) do If St[i] in Ruschar then Inc(m[Ord(St[i])]);
  For i:=0 to 255 do If m[i]<>0 then Writeln('Букв в тексте ',Chr(i),' - ',m[i]);
  ReadLn;
End.
0
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
08.02.2014, 11:00 4
Цитата Сообщение от tomb2002 Посмотреть сообщение
константа RusChar
Сами ввели в программу.
Цитата Сообщение от tomb2002 Посмотреть сообщение
алфавит поделен на две части
Ну буква "Ё" кажись идет в таблице ASCII отдельно от всех русских букв, а почему остальные буквы разбили,мне тоже интересно.
0
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
08.02.2014, 14:16 5
Потому что такая система кодировки ASCII - в таблице есть промежуток между "п" и "р".
А константа множества удобнее в использовании, чем нагромождать код несколькими условными операторами. Их заменяет всего одна строчка на проверку русского текста: If St[i] in Ruschar then
1
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
08.02.2014, 14:27 6
Т.е
Pascal
1
const RusChar=['А'..'Я','а'..'я','Ё','ё']
неправильно?
0
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
08.02.2014, 14:50 7
п - код 175
р - код 224
а между ними символы: ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀

т.е. const RusChar=['А'..'Я','а'..'я','Ё','ё'] - будет работать, но надо учитывать, что в этот диапазон попадают указанные мною выше символы.
2
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
08.02.2014, 16:42 8
Огромное спасибо! Теперь буду знать.
0
08.02.2014, 16:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.02.2014, 16:42
Помогаю со студенческими работами здесь

Программа для подсчета количества вхождений в строку
Очень требуется помощь! Необходимо решить следующую задачу на masm. Определить строку символов....

Программа для подсчета количества строк в тексте
Нужно написать программу, для подсчета количества строк в текстовом файле, и каждые 5 строк она...

Программа для подсчета количества полных дней
Напишите программу для подсчета количества полных дней, прошедших с начала года, если сейчас год Y,...

Программа для подсчета количества элементов массива
Помогите пожалуйста составить программу. Задание: Составить программу подсчета количества...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru