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

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

30.12.2012, 10:06. Показов 1953. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите, пожалуйста :'(
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.12.2012, 10:06
Ответы с готовыми решениями:

Дан символьный файл, содержащий произвольный текст длиной более 5000 слов. Слова разделены пробелами и знаками препинания. Получить 100 наиболее часто
НАРОД срочно нужно написать на паскале : Дан символьный файл, содержащий произвольный текст...

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

Найти частоту появления каждого из наиболее часто встречающихся элементов
Помогите решить задачу на Pascal: В целочисленном массиве K(n) много повторяющихся элементов....

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

3
Фрилансер
3418 / 2815 / 3000
Регистрация: 08.02.2012
Сообщений: 8,562
Записей в блоге: 1
30.12.2012, 10:30 2
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Uses Crt;
Const mn=['a'..'z','A'..'Z','а'..'я','А'..'Я'];
Var f:file of char;
    A:array[0..255] of byte;
    m:set of char;
    imax,n:byte;
    ch:char;
Begin
    ClrScr;
    writeln('Окончание ввода ввод " "');
    Assign(f,'in.dat');Rewrite(f);
    Repeat
     write('Введите букву: ');readln(ch);
     write(f,ch);
     if ch in mn then inc(A[ord(ch)]);
    Until ch=' ';
    n:=0;m:=[];
    Repeat
      imax:=0;
      inc(n);
      Reset(f);
      While (imax=0)and(not Eof(f)) do
      Begin
        read(f,ch);
        if (ch in mn)and not (ch in m) then imax:=ord(ch);
      End;
      While Not Eof(f) do
      Begin
        read(f,ch);
        if ch in mn then
         if (A[ord(ch)]>A[imax])and not (ch in m) then 
          imax:=ord(ch);
      End;
      if imax>0 then
      Begin
        writeln(n,' max = ',chr(imax),' встречается ',A[imax]);
        m:=m+[chr(imax)];
      End;
    Until (imax=0)or(n=10);
    Close(f);
    readln;
End.
1
durila :d
125 / 107 / 98
Регистрация: 21.12.2012
Сообщений: 160
30.12.2012, 11:57 3
Здравствуйте, вот вариант решения:

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
program _strings;
 
const
 
 N = 10;
 filename = 'input.txt' ;
 
 
type
 
 TInfo  = record
  chr   : char;
  count : integer;
 end;
 
 TLetters = array [0..59] of Tinfo;
 
var
 
 fi           : text;
 inString     : string;
 letters      : TLetters;
 i            : byte;
 
procedure CheckChr(const inCHR:char;var aLetters:TLetters );
 const
  cLet= ['A'..'Z','А'..'Я'];
 var
  not_found    : boolean;
  j,h          : byte;
begin
 if inCHR in cLet then
 begin
  h:=aLetters[0].count;
  not_found:=TRUE;
  for j:=1 to h do
    if letters[j].chr = inCHR then
     begin
      inc(aLetters[j].count);
      not_found:=FALSE;
      break;
     end;
    if not_found then 
     begin
      inc(h);
      aLetters[h].chr:=inCHR;
      aLetters[h].count:=1;
     end;
  aletters[0].count:=h;     
 end;
end;
 
procedure UpString(var instr:string);
{переписывает instr в верхнем регистре}
 const
  eng_alph = ['a'..'z','A'..'Z'];
  rus_alph = ['а'..'я','А'..'Я'];
 var
  i,lnth      : integer;
begin
 lnth:=length(instr);
 for i:=1 to lnth do 
  begin
   if instr[i] in eng_alph then 
    if instr[i] in ['a'..'z'] then instr[i]:=CHR(ord(instr[i])-32);
   if instr[i] in rus_alph then 
    if instr[i] in ['а'..'я'] then instr[i]:=CHR(ord(instr[i])-32);
  end;
end;
 
procedure Sort(var Let:Tletters;left,right:byte);
 var
  l,r,m       : integer;
  temp        : TInfo;
begin
 l:=left;
 r:=right;
 m:=let[(l+r) div 2].count;
 repeat
  while let[l].count > m do inc(l);
  while let[r].count < m do dec(r);
  if l<=r then 
   begin
    temp:=let[l];
    let[l]:=let[r];
    let[r]:=temp;
    inc(l);dec(r);
   end;
 until l>r;
 if left< r then sort(Let,left,r);
 if l<right then sort(let,l,right);
end;
 
BEGIN
 
{ Assign & read text }
 assign(fi,filename);reset(fi);
 letters[0].count:=0;
 while not eof(fi) do
     begin
      Readln(fi,instring);
      UpString(instring);
      for i:=1 to length(instring) do CheckCHR(instring[i],letters);
     end;
 close(fi);
{ sort & output }
sort(letters,1,letters[0].count);
for i:=1 to N do writeln(letters[i].chr,' ',letters[i].count);
 
END.
(компилировался в PascalABC.net)
1
0 / 0 / 0
Регистрация: 02.11.2012
Сообщений: 5
30.12.2012, 18:45  [ТС] 4
спасибо большое
 Комментарий модератора 
Если какой-либо пост на форуме показался вам полезным, нажмите кнопку "Спасибо" внизу самого поста.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.12.2012, 18:45
Помогаю со студенческими работами здесь

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

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

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

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


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

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

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