Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 26.10.2019, 20:36   #1
San_Dar
 
Регистрация: 26.10.2019
Сообщений: 4
По умолчанию PASCAL Определить, сколько символов алфавита составляют вводимый текст, и подсчитать частоту появления каждого символа.

Вобщем у меня есть 2 кода
1ый считает просто количество каждого символа в тексте (только английском, а мне желательно еще и русский)
Код:
var
    s: string;
    a: array [0..255] of integer;
    i:integer;
begin
  writeln('Введите текст');
	read(s);
		for i := 1 to length (s) do 
  begin
			s[i] := lowercase(s[i]);
			inc (a[ord (s[i])]);
	end;
	for i := 32 to 255 do
		if  (a[i] <> 0)   then
			writeln (chr(i), ' - ', a[i]);
end.
и вот второй код который считает частоту какого либо символа в тексте
Код:
var
        count,counts,i:word;
        countr:real;
        s,ss:string;
 
begin
writeln('Введите строку');
readln(s);
write('Введите букву: '); 
readln(ss);
for i:=1 to length(s) do 
  begin
  if s[i]=' ' then
    inc(counts);
  if upcase(s[i])=upcase(ss) then
    inc(count);
  end;
counts:=length(s)-counts;
countr:=count/counts;
writeln(countr:3:2);
readln;
end.
вобщем мне нужно это как то объеденить (ну чтобы считалась частота каждого символа текста) + счетчик символов в тексте (чтобы посчитать общее количество символов)

Последний раз редактировалось San_Dar; 27.10.2019 в 02:04. Причина: введен один и тот же код 2 раза
San_Dar вне форума Ответить с цитированием
Старый 26.10.2019, 22:34   #2
ViktorR
Участник клуба
 
Регистрация: 23.10.2010
Сообщений: 1,407
По умолчанию

В чём отличие этих кодов? Найдите два.
Так понимаю, что длинна строки - это полное число символов.
После подсчёта количества символов выводим символ и сколько раз он встретился в тексте:
Код:
writeln (chr(i), ' - ', a[i]);
Тогда можно и так:
Код:
writeln (chr(i), ' - ', a[i], ' - ', a[i]/length(s):6:4);
Тут мы добавили вывод частоты появления символа с точностью 4-е знака после запятой.

PS: Поскольку массив символов до 255, то вероятно в этом массиве есть и кириллица.
Тут ведь ASCII код.
Как-то так, ...

Последний раз редактировалось ViktorR; 26.10.2019 в 22:51.
ViktorR вне форума Ответить с цитированием
Старый 27.10.2019, 01:48   #3
San_Dar
 
Регистрация: 26.10.2019
Сообщений: 4
По умолчанию

Но тут
Код:
a[i]/length(s):5:2
считается частота появления включая пробелы, а мне б надо чтобы без них считал. Да и 2 код все же не работает с русским текстом, просто отказывается: выделяет это
Код:
inc (a[ord(s[i])]);
и пишет "Индекс находился вне границ массива".
San_Dar вне форума Ответить с цитированием
Старый 27.10.2019, 02:06   #4
San_Dar
 
Регистрация: 26.10.2019
Сообщений: 4
По умолчанию

Кстати я добавил 2 код, который выводит частоту конкретного символа, но с любым текстом, а желательно чтобы выводил частоту каждого символа.

Последний раз редактировалось San_Dar; 27.10.2019 в 13:23.
San_Dar вне форума Ответить с цитированием
Старый 27.10.2019, 15:54   #5
ViktorR
Участник клуба
 
Регистрация: 23.10.2010
Сообщений: 1,407
По умолчанию

Вычти из длинны строки число пробелов, код 32, вроде.
a[i]/(length(s) - a[32]):5:2
О кириллице в Паскале можно посмотреть, например тут:
https://www.programmersforum.ru/showthread.php?t=232316
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal Для каждого символа текста указать его относительную частоту появления в тексте student___ Помощь студентам 52 02.05.2013 18:12
Создать программу определяющую частоту появления каждого байта в файле. BadGuy Помощь студентам 1 02.04.2012 23:31
В заданном текстовом файле подсчитать частоту использования каждого слова из словаря (другого текстового lineico Помощь студентам 4 09.05.2011 19:35
Найти (в процентах) частоту появления каждого из m наиболее часто встречающихся элементов sk1p Паскаль, Turbo Pascal, PascalABC.NET 2 26.09.2008 23:57
В чем проблема появления символа & в начале каждого заголовка итема созданного в рунтайте раздела меню? SkAndrew Общие вопросы Delphi 17 10.08.2008 21:44