Форум программистов, компьютерный форум CyberForum.ru

Частота появления буквы в строке - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
dolmatova22
17 / 0 / 1
Регистрация: 13.03.2010
Сообщений: 30
08.05.2010, 16:41     Частота появления буквы в строке #1
[CИ]
Opredelit' chastotu poyavleniya bukvi v stroke. Opredelit' naibolee chasto vstrechayuchusya bukvu. (S parametrom - Bukva A zaglavnaya , nachinaya с 65 (strochnaya с 97))


key mapping
0:
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: 0
49: 1
50: 2
51: 3
52: 4
53: 5
54: 6
55: 7
56: 8
57: 9
58: :
59: ;
60: <
61: =
62: >
63: ?
64: @
65: A
66: B
67: C
68: D
69: E
70: F
71: G
72: H
73: I
74: J
75: K
76: L
77: M
78: N
79: O
80: P
81: Q
82: R
83: S
84: T
85: U
86: V
87: W
88: X
89: Y
90: Z
91: [
92: \
93: ]
94: ^
95: _
96: `
97: a
98: b
99: c
100: d
101: e
102: f
103: g
104: h
105: i
106: j
107: k
108: l
109: m
110: n
111: o
112: p
113: q
114: r
115: s
116: t
117: u
118: v
119: w
120: x
121: y
122: z
123: {
124: |
125: }
126: ~
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2010, 16:41     Частота появления буквы в строке
Посмотрите здесь:

В строке заменить все буквы «О» на «Ъ», а буквы «Е» – на случайные символы C++
Строка: Как расположить буквы в первом массиве, который типа char, в порядке убывания или возрастания частоты появления букв в тексте? C++
C++ Индекс первого появления буквы в строке
Напишите программу, которая печатает гистограмму появления разнообразных введенных символов во входной строке C++
Напишите программу, печатающую гистограмму появления различных введенных символов во входной строке C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
08.05.2010, 17:06     Частота появления буквы в строке #2
C++
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
#include "stdafx.h"
#include <string>
#include <vector>
#include <algorithm>
#include <stdio.h>
 
using namespace std;
 
class A{
public:
    A( vector< int >& _v ) : v(_v){}
    void operator()( unsigned char ch ){
        ++v[ch];
    }
private:
    vector< int >& v;
};
 
int main( int, char** ){
    string s = "hello world!";
    vector< int > v(256);
    for_each( s.begin(), s.end(), A(v) );
    for( int i=0;i<256;++i ){
        if( v[i] != 0 ){
            printf( "%d - %c: %d\n", i, i, v[i] );
        }
    }
    vector<int>::iterator it = max_element( v.begin(), v.end() );
    int nPos = it - v.begin();
    printf( "max - %d %c (%d)\n", nPos, nPos, v[nPos] );
    return 0;
}
dolmatova22
17 / 0 / 1
Регистрация: 13.03.2010
Сообщений: 30
08.05.2010, 17:13  [ТС]     Частота появления буквы в строке #3
C++
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
#Include <stdlib.h>
#Include <stdio.h>
#Include <ctype.h>
#Include <string.h>
{
void main();
{ 
char st [50];
char s;
int i=0;
int k[28];
int N;
 
printf("\n vvedite stroku teksta:");
for (i=1; i<27 ; i++){
k=0;
 
 
do { s=getchar();
st[i++]=s;
 
if islower ((s)==0) k[s-65]=++
else k[s-97]=++;
while (s!='\n');
st [--i]='\0';
printf("\naib chasto vstr bukva-:");
getch();
}
Добавлено через 3 минуты
Как прописать условия регистра?
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
08.05.2010, 17:17     Частота появления буквы в строке #4
islower, isupper, можно по диапазону
islower: 'a' .. 'z'
можно опустить все в нижний регистр с помощью tolower, вы хотите частоту вне зависимости от регистра?
dolmatova22
17 / 0 / 1
Регистрация: 13.03.2010
Сообщений: 30
08.05.2010, 17:25  [ТС]     Частота появления буквы в строке #5
Да, вне зависомости

Добавлено через 4 минуты
Else объявлен неверно?

Добавлено через 2 минуты
То есть, если буква будет заглавной/строчной - считать ее одним и тем же символом
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
08.05.2010, 17:28     Частота появления буквы в строке #6
Цитата Сообщение от dolmatova22 Посмотреть сообщение
#Include <stdlib.h>
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#Include <stdio.h>
#Include <ctype.h>
#Include <string.h>
{
void main()
{ 
char st [50];
char s;
int i=0;
int k[28];
int N;
printf("\n vvedite stroku teksta:");
for (i=0; i<28 ; i++){
k[i]=0;
}
do { s=getchar();
st[i++]=s;
if( isupper ((int)s) ) ++k[s-65];
else ++k[s-97];
}while (s!='\n');
st [--i]='\0';
printf("\naib chasto vstr bukva-:");
getch();
}
пару ошибок убито
не уверен что getchar возвращает в конце строки
dolmatova22
17 / 0 / 1
Регистрация: 13.03.2010
Сообщений: 30
08.05.2010, 17:45  [ТС]     Частота появления буквы в строке #7
Не возвращает.

( isupper ((int)s) ) - почему именно так?

Добавлено через 6 минут
C++
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
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
 
void main()
{ char st [50];
char s;
int i=0;
int k[28];
int M;
clrscr();
printf("\n vvedite stroku teksta:");
for (i=0;i<28; i++){
k[i]=0;
}
 
do { s=getchar();
st[i++]=s;
 
if (islower ((int)s)) ++k[s-65];
 
else
++k[s-97];
}
while (s!='\n');
st [--i]='\0';
printf("\n naib chasto vstr bukva-:=%d",k);
getch();
}
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
08.05.2010, 17:51     Частота появления буквы в строке #8
вы проверяете на нижний регистр и вычитаете 65, хотя с 65 начинаются буквы верхнего регистра - перепутано местами
ну и вы вообщем-то не написали нахождение наиболее встречающейся буквы=)
dolmatova22
17 / 0 / 1
Регистрация: 13.03.2010
Сообщений: 30
08.05.2010, 17:52  [ТС]     Частота появления буквы в строке #9
Точно..!

Добавлено через 40 секунд
Находить ее - как отношение всех символов к количеству встречающихся?
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
08.05.2010, 17:55     Частота появления буквы в строке #10
нуу вообщем k[i] к количеству букв в строке
dolmatova22
17 / 0 / 1
Регистрация: 13.03.2010
Сообщений: 30
08.05.2010, 18:01  [ТС]     Частота появления буквы в строке #11
C++
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
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
 
void main()
{ char st [50];
char s;
int i=0;
int k[28];
int M;
clrscr();
printf("\n vvedite stroku teksta:");
for (i=0;i<28; i++){
k[i]=0;
M=k[i]/k;
}
 
do { s=getchar();
st[i++]=s;
 
if (isupper ((int)s)) ++k[s-65];
 
else
++k[s-97];
}
while (s!='\n');
st [--i]='\0';
printf("\naib chasto vstr bukva-:=%d",M);
 
getch();
}
Где M-наиболее часто встречающаяся буква в строке
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
08.05.2010, 18:22     Частота появления буквы в строке #12
считать то частоту надо в конце, а не в начале =)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2010, 21:38     Частота появления буквы в строке
Еще ссылки по теме:

C++ Функция преобразует буквы верхнего регистра в строке s в буквы нижнего регистра
Через HyperTerminal доступна частота COM порта 921600, но в приложении максимальная частота гораздо меньше C++

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

Или воспользуйтесь поиском по форуму:
Manjak
 Аватар для Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
08.05.2010, 21:38     Частота появления буквы в строке #13
C++
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
class compare
{
public:
    typedef map<char, int> Symbols;
 
    void operator()(char& arg)
    {
        symbols[arg]++;
    }
 
    void print()
    {
        Symbols::iterator end = symbols.end();
        for (Symbols::iterator itr = symbols.begin(); itr != end; ++itr)
        {
            cout << itr->first << " = " << itr->second << endl;
        }
    }
private:
    Symbols symbols;
};
 
int main()
{
    string str("abcdeabcdeabcde");
    compare cmp = for_each(str.begin(), str.end(), compare());
    cmp.print();
    system("pause");
    return 0;
}
Так можно сделать...
Yandex
Объявления
08.05.2010, 21:38     Частота появления буквы в строке
Ответ Создать тему
Опции темы

Текущее время: 12:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru