1 / 1 / 0
Регистрация: 30.11.2008
Сообщений: 48
1

Определить, сколько раз и какие символы встречаются в текстовом файле

26.05.2009, 21:47. Показов 1431. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Эта программка рассчитывает сколько раз и какие символы встречаются в текстовом файле.Нужно дополнить тем,что нет разделения между заглавными и прописными буквами+в конце вывести символы в порядке частоты их появления в слове.
Пожалуйста помогите.:'(
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
program fail;
uses crt;
type mas_tips=array [32..126] of integer;
var f1:text;
    f2:text;
    c:char;
    x,y,max,ymax:integer;
    var mas:mas_tips;
begin
clrscr;
     assign (f1,'C:\BP\Bin\f1.txt');
     assign (f2,'C:\BP\Bin\f1.txt');
     reset (f1);
     rewrite (f2);
     while not (eof(f1)) do begin
           while not (eoln(f1)) do begin
                                   read (f1,c);
                                   x:=ord(upcase(c));
                                   if (x>31) and (x<127) then mas[x]:=mas[x]+1
                                   end;
           readln (f1)
           end;
  for x:=32 to 126 do if mas[x]>0 then write (chr(x),'-',mas[x]);
 c:=readkey
end.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.05.2009, 21:47
Ответы с готовыми решениями:

Дана строка символов. Определить, какие символы и сколько раз встречаются в данной строке
Помогите пожалуйста:)))

Определить какие символы и сколько раз встречаются в заданной строке
Здравствуйте, товарищи программисты! Помогите, пожалуйста, вот три задачки, которые нужно написать:...

Определить какие символы и сколько раз встречаются в строке
Здравствуйте, товарищи программисты! Помогите, пожалуйста, вот задачка, которые нужно написать: ...

Определить, какие символы и сколько раз встречаются в строке
Дана строка. Определить, какие символы и сколько раз встречаются в данной строке. Помогите...

7
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
26.05.2009, 22:41 2
нет разделения между заглавными и прописными буквами+
Так сами их делаете все большими-x:=ord(upcase(c));-зачем upcase?
А что за диапазон 32-126, от пробела до ~, и при чем здесь буквы?
0
UNIX-way
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
26.05.2009, 22:47 3
В 12-й строке кода ошибка. Передаётя то же самое имя файла, что и в первой. Замените имя файла на "C:\BP\Bin\f2.txt", например. И не стоило б пихать свои файлы в каталог BIN компилятора.
0
1 / 1 / 0
Регистрация: 30.11.2008
Сообщений: 48
26.05.2009, 22:53  [ТС] 4
Про ошибку спасибо,Delphin_KKC.
Puporev,про upcase это я вероятно напутала,а всё остальное нам уже было дано.
0
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
26.05.2009, 22:56 5
Вот посмотрите здесь коды символов и подумайте, что вы пытаетесь вывести.
Написать функцию, которая возвращает N правых символов в виде строки
1
1 / 1 / 0
Регистрация: 30.11.2008
Сообщений: 48
26.05.2009, 23:10  [ТС] 6
Спасибо конечно,я посмотрю,но мне понятно-что надо вывести.Я не знаю как переделать.

Добавлено через 10 минут 27 секунд
Просто если в слове есть три А и два а,то он выводит их отдельно и считает отдельно.И нужно,чтобы выводил символы в убывающем порядке.
Например,
А-5
"-3
,-1
0
UNIX-way
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
26.05.2009, 23:25 7
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Всё, что далее - добавить соответстующие разделы программы:
Pascal
1
2
3
4
5
6
7
8
type TMyRec = record
              sym:char;
              freq:integer;
              end;
var
recs:array[32..126] of TMyRec;
i,j,mx,nm:byte;
rec:TMyRec;
А следующий код вставить перед самым концом программы (перед readkey)
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
for i:=32 to 126 do 
 begin
 recs[i].sym:=chr(i);
 recs[i].freq:=mas_tips[i];
 end;
 
for i:=32 to 125 do
 begin
 mx:=recs[i].freq;
 nm:=i;
 for j:=i+1 to 126 do
  begin
  if recs[j].freq > mx then begin mx:=recs[j].freq; nm:=j; end;
  end;
 if mx <> i then
  begin
  rec:=recs[i];
  recs[i]:=recs[nm];
  recs[nm]:=rec;
  end;
 end;
for x:=32 to 126 do if recs[x].freq>0 then write (recs[x].sym,'-',recs[x].freq);
Примечания:
1) Здесь уже индексы в массиве не всегда соответствуют коду символа.
2) Алгоритм сортировки не самый лучший, но должен работать.
З.Ы. Я в инете с ноута и для паскаля тут нету компилятора. Потому писал в обычном виндовом "блокноте". Возможны некоторые ошибки. Но вродь правильно.

Добавлено через 7 минут 0 секунд
Цитата Сообщение от Zela124 Посмотреть сообщение
Про ошибку спасибо,Delphin_KKC.
Puporev,про upcase это я вероятно напутала,а всё остальное нам уже было дано.
Хз. Мож и не напутала. UpCase приводит все символы к верхнему регистру. Т.е. как раз достигается неразличение программой прописных и строчных букв. Но только английских. Для русских букв надо самому такую функцию писать. В Паскале её нет.
1
1 / 1 / 0
Регистрация: 30.11.2008
Сообщений: 48
26.05.2009, 23:33  [ТС] 8
Спасибо большущее!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.05.2009, 23:33
Помогаю со студенческими работами здесь

Определить, какие символы и сколько раз встречаются в тексте
1)Определить, какие символы и сколько раз встречаются в тексте. 2)Составить программу,...

Определить, какие символы и сколько раз встречаются в данной строке. C++
Дана строка. Определить, какие символы и сколько раз встречаются в данной строке.

Определить, какие символы и сколько раз встречаются в данной строке
Дана строка. Определить, какие символы и сколько раз встречаются в данной строке.

Определить, какие символы и сколько раз встречаются в тексте. Текст: ХОРОШО ТОГО УЧИТЬ, КТО ХОЧЕТ ВСЕ ЗНАТЬ
Определить, какие символы и сколько раз встречаются в тексте. Текст: ХОРОШО ТОГО УЧИТЬ, КТО ХОЧЕТ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru