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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 5.00
zoluxa
1 / 1 / 0
Регистрация: 13.12.2009
Сообщений: 18
#1

Для каждого символа заданного текста указать, сколько раз встречается в тексте - C++

14.12.2009, 10:14. Просмотров 1912. Ответов 21
Метки нет (Все метки)

Для каждого символа заданного текста указать, сколько раз встречается в тексте. Сообщение об одном символе не должно встречаться больше, чем один раз. только напишите пожалуйста в языке си и в консоль апликейшн

Буду очень благодарним!!!!!
1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2009, 10:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Для каждого символа заданного текста указать, сколько раз встречается в тексте (C++):

Для каждого символа заданного текста указать сколько раз он встречается в тексте - C++
Для каждого символа заданного текста указать сколько раз он встречается в тексте на С++

Для каждого символа заданного текста указать, сколько раз он встречается в тексте - C++
Доброго времени суток , прошу помочь с решением задачи : Для каждого символа заданного текста указать, сколько раз он встречается в...

Для каждого из слов указать, сколько раз оно встречается в заданном тексте - C++
Дан текст, содержащий n строк. Для каждого из слов указать, сколько раз оно встречается.

Для каждого из слов данного текста указать, сколько раз оно встречается в предложении - C++
Для каждого из слов данного текста указать, сколько раз оно встречается в предложении.С чего начать и как попроще решить эту задачу?

Для каждого из слов данного текста указать, сколько раз оно встречается в предложении - C++
Для каждого из слов данного текста указать, сколько раз оно встречается в предложении

Для каждого из слов предложения указать, сколько раз оно встречается в предложении - C++
Добрый день! Не могу решить две задачи в с++ , поскажите пожалуйста: 1. Для каждого из слов предложения указать, сколько раз оно...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ISergey
Maniac
Эксперт С++
1374 / 885 / 52
Регистрация: 02.01.2009
Сообщений: 2,658
Записей в блоге: 1
14.12.2009, 10:48 #2
На С++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <map>
 
void out(const std::pair<char, int> &rhs){
    std::cout << rhs.first << " : " << rhs.second << std::endl;
}
int main(){
 
    std::map<char, int> map;
    std::map<char, int>::iterator i;
    char *str = "Testing text...";
    
    for(; str != str + strlen(str); ++str)
        map[*str]++;
 
    for(i = map.begin(); i != map.end(); ++i)
        out(*i);
    return 0;
}
На С
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <string.h>
 
int main(){
    int arr[256] = {0};
    char *str = "Testing text...";
 
    for(; str != str + strlen(str); ++str)
        arr[(int)*str]++;
    int i;
    for(i = 0; i < 256; ++i)
        if(arr[i]) printf("%c : %d\n", (char)i, arr[i]); 
    return 0;
}
Цитата Сообщение от Result
: 1
. : 3
T : 1
e : 2
g : 1
i : 1
n : 1
s : 1
t : 3
x : 1
Для продолжения нажмите любую клавишу . . .
2
MR_Andrew
12 / 12 / 2
Регистрация: 19.12.2009
Сообщений: 113
19.12.2009, 21:29 #3
Хм, у меня похожее, только мне надо для каждого слова заданного предложения указать долю гласных. Определить слово, в котором доля гласных максимальная.

Насколько я понимаю, у меня цикл другой. Вот только как отфильтровать гласные и согласные...
Если не трудно, помогите, пожалуйста
0
ISergey
Maniac
Эксперт С++
1374 / 885 / 52
Регистрация: 02.01.2009
Сообщений: 2,658
Записей в блоге: 1
20.12.2009, 03:34 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
#include <vector>
#include <map>
 
 
bool is_vowels(char ch){
    return (ch == 'e') || (ch == 'u') || (ch == 'i') || (ch == 'o') ||(ch == 'a'); 
}
 
 
void out(const std::pair<std::string, int> &rhs){
    std::cout << rhs.first << "\t " 
        << rhs.second 
        << " : "<< (rhs.first.size() - rhs.second) 
        << std::endl;
}
 
int main(){
    std::string rhs = "Testing Line Andrew maaaax";
    std::stringstream ss(rhs);
 
    std::map<std::string, int> map;
    std::map<std::string, int>::iterator im, max;
 
    std::vector<std::string> res;
    std::vector<std::string>::iterator i;
 
    std::copy(std::istream_iterator<std::string>(ss),
        std::istream_iterator<std::string>(),
        std::back_inserter(res));
    i = res.begin();
    for(; i != res.end(); ++i)
        map[*i] = count_if((*i).begin(), (*i).end(), is_vowels);
    
    im = max = map.begin();
    for(; im != map.end(); ++im){
        out(*im);
        if((*im).second > (*max).second)
            max = im;
    }
    std::cout << "Max: \n";
    out(*max);
    return 0;
}
http://codepad.org/HtsNx6U1
0
MR_Andrew
12 / 12 / 2
Регистрация: 19.12.2009
Сообщений: 113
20.12.2009, 15:10 #5
ISergey, Огромное спасибо! Сам не ожидал... Но сильно сложно, а можно проще, как в сообщении номер 2, где весь код в 14 строчек поместился? Можно проще: только слово, где больше всего и кол-во букв, без наворотов. Вы это сдеали уж больно профессионально

Добавлено через 18 минут
ISergey, да, только заметил: у меня не С++, а просто Си...
0
ISergey
Maniac
Эксперт С++
1374 / 885 / 52
Регистрация: 02.01.2009
Сообщений: 2,658
Записей в блоге: 1
21.12.2009, 03:16 #6
На Си можно.. но много кода будет и у меня времени для задач почти нету ( в принципе только на выходных )
0
Bloomfield
2 / 2 / 1
Регистрация: 16.11.2009
Сообщений: 51
21.12.2009, 16:38 #7
прокомментируйте пожалуйста код
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <string.h>
 
int main(){
        int arr[256] = {0};
        char *str = "Testing text...";
 
        for(; str != str + strlen(str); ++str)
                arr[(int)*str]++;
        int i;
        for(i = 0; i < 256; ++i)
                if(arr[i]) printf("%c : %d\n", (char)i, arr[i]); 
        return 0;
}
0
MR_Andrew
12 / 12 / 2
Регистрация: 19.12.2009
Сообщений: 113
21.12.2009, 18:05 #8
ISergey, ну ладно, и на том спасибо!!!
0
Bloomfield
2 / 2 / 1
Регистрация: 16.11.2009
Сообщений: 51
21.12.2009, 18:16 #9
как можно преобразовать чтобы текст вводил пользователь?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <string.h>
 
int main(){
        int arr[256] = {0};
        char *str = "Testing text...";
 
        for(; str != str + strlen(str); ++str)
                arr[(int)*str]++;
        int i;
        for(i = 0; i < 256; ++i)
                if(arr[i]) printf("%c : %d\n", (char)i, arr[i]); 
        return 0;
}
0
easybudda
Модератор
Эксперт CЭксперт С++
9632 / 5580 / 948
Регистрация: 25.07.2009
Сообщений: 10,714
21.12.2009, 19:45 #10
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от MR_Andrew Посмотреть сообщение
каждого слова заданного предложения указать долю гласных. Определить слово, в котором доля гласных максимальная.
Двоякое какое-то определение - "доля гласных"... В смысле отношение количества гласных к количеству букв в слове? Если да, то переделайте немного, а если всё-таки "наибольшее количество гласных", то и так сойдёт. К тому же вывод забавный...
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
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
    
#define SPC " \t\n"
    
int isVowel(int c){
    static char vowels[] = "AEIOU";
    return ( strchr(vowels, toupper(c)) != NULL );
}
 
typedef struct {
    char *wrd;
    size_t vow_cnt;
    size_t len;
} Word_t;
 
int cmpByVowelsDesc(const void *a, const void *b){
    return (*(Word_t*)b).vow_cnt - (*(Word_t*)a).vow_cnt;
}
 
/* для каждого слова заданного предложения указать долю гласных. */
int main(void){
    char buf[BUFSIZ], *pBuf, *pWrd, *p;
    Word_t *words, *w;
    size_t size, max_vowels, max_index, i;
    
    while ( 1 ){
        printf("\nString: ");
        if ( !fgets(buf, BUFSIZ, stdin) )
            exit(1);
        if ( pWrd = strrchr(buf, '\n') )
            *pWrd = '\0';
        if ( !*buf )
            break;
        words = NULL;
        size = 0;
        for ( pWrd = strtok(buf, SPC); pWrd != NULL; pWrd = strtok(NULL, SPC) ){
            if ( ( words = (Word_t*)realloc(words, sizeof(Word_t) * (size + 1)) ) == NULL ){
                fprintf(stderr, "Memory error!\n");
                exit(1);
            }
            w = words + size;
            if ( ( w->wrd = strdup(pWrd) ) == NULL ){
                fprintf(stderr, "Memory error!\n");
                exit(1);
            }w->len = strlen(w->wrd);
            for ( w->vow_cnt = 0, p = w->wrd; *p; ++p )
                if ( isVowel(*p) )
                    ++(w->vow_cnt);
            ++size;
        }
        if ( !words ){
            fprintf(stderr, "Empty string!\n");
            exit(1);
        }
        
        qsort(words, size, sizeof(Word_t), cmpByVowelsDesc);
        printf("\nWord           Length  Vowels  %%\n----------------------------------------\n");
        for ( i = 0; i < size; ++i )
            printf("%-15s%-8d%-8d%.1f\n", words[i].wrd, words[i].len, words[i].vow_cnt, 
                (double)words[i].vow_cnt * 100.0 / (double)words[i].len);
        printf("----------------------------------------\n");
        
        for ( i = 0; i < size; ++i )
            free(words[i].wrd);
        free(words);
    }
    
    exit(0);
}
0
MR_Andrew
12 / 12 / 2
Регистрация: 19.12.2009
Сообщений: 113
21.12.2009, 19:49 #11
easybudda, как раз наибольшее количество. Огромное Вам спасибо!!!!
0
easybudda
Модератор
Эксперт CЭксперт С++
9632 / 5580 / 948
Регистрация: 25.07.2009
Сообщений: 10,714
21.12.2009, 19:59 #12
лишних переменных наоставлял
max_vowels, max_index вообще не нужны
0
MR_Andrew
12 / 12 / 2
Регистрация: 19.12.2009
Сообщений: 113
21.12.2009, 20:00 #13
Цитата Сообщение от easybudda Посмотреть сообщение
лишних переменных наоставлял
max_vowels, max_index вообще не нужны
Хорошо, спасибо. Учту
0
ISergey
Maniac
Эксперт С++
1374 / 885 / 52
Регистрация: 02.01.2009
Сообщений: 2,658
Записей в блоге: 1
21.12.2009, 20:02 #14
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Bloomfield Посмотреть сообщение
как можно преобразовать чтобы текст вводил пользователь?
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
33
34
35
#include <stdio.h>
#include <string.h>
 
 
char *mygetline(char *line, int size)
{
   if ( fgets(line, size, stdin) )
   {
      char *newline = strchr(line, '\n');
      if ( newline )
      {
         *newline =  '\0'; 
      }
   }
   return line;
}
 
int main(){
        int arr[256] = {0};
        char line[256];
        
        printf("Input Text: \n-> ");
 
        mygetline(line, sizeof line);
        
        char *str = line;
        for(; str != str + strlen(str); ++str)
                arr[(int)*str]++;
        int i;
        for(i = 0; i < 256; ++i)
                if(arr[i]) printf("%c : %d\n", (char)i, arr[i]); 
        
        system("pause");
        return 0;
}
Цитата Сообщение от Bloomfield Посмотреть сообщение
прокомментируйте пожалуйста код
Что именно не понятно?
1
Bloomfield
2 / 2 / 1
Регистрация: 16.11.2009
Сообщений: 51
21.12.2009, 20:53 #15
как там происходит
C
1
2
3
4
5
for(; str != str + strlen(str); ++str)
        arr[(int)*str]++;
    int i;
    for(i = 0; i < 256; ++i)
        if(arr[i]) printf("%c %d\n", (char)i, arr[i]);
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2009, 20:53
Привет! Вот еще темы с ответами:

Для встречающихся в заданном тексте пар расположенных символов указать, сколько раз встречается каждое из таких пар. - C++
Для встречающихся в заданном тексте пар расположенных символов указать, сколько раз встречается каждое из таких пар. #include&lt;stdio.h&gt; ...

Для встречающихся в заданном тексте пар расположенных символов указать, сколько раз встречается каждое из таких пар - C++
помогите пожалуйста решить Для встречающихся в заданном тексте пар расположенных символов указать, сколько раз встречается каждое...

Задачка на указатели. Указать, сколько раз встречается в тексте каждое из двухбуквенных сочетаний - C++
Для встречающихся в заданном тексте пар рядом расположенных символов указать,сколько раз встречается в тексте каждое из таких двухбуквенных...

Для каждого элемента вектора определить, сколько раз он встречается в матрице - C++
Дана целочисленная матрица A(N,M) и целочисленный вектор D(K). Для каждого элемента вектора определить, сколько раз он встречается в...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.12.2009, 20:53
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru