Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/28: Рейтинг темы: голосов - 28, средняя оценка - 4.89
andyoO
1 / 1 / 1
Регистрация: 19.12.2012
Сообщений: 68
1

Подсчитать количество вхождений в тексте каждого из символов массива

19.12.2012, 23:31. Просмотров 5683. Ответов 12
Метки нет (Все метки)

Задан текст. Задано множество из n символов. Подсчитать количество вхождений в тексте каждого из символов массива

есть ли более рациональный путь решения чем через switch?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2012, 23:31
Ответы с готовыми решениями:

Дан текст, содержащий 30 символов. Подсчитать количество вхождений символов А и Б.
Ребят , помогите плиз , послезавтра экзамен , вот нашел возможные задание , может кто подсказать ,...

В тексте подсчитать количество вхождений заданной буквы
помогите пожалуста написать програму: "в тексте подсчитать количество вхождений заданной буквы."

Подсчитать в тексте количество вхождений определенного символа
Составить программы для решения задач на языке С ++ Даны предложения. Подсчитать количество...

Подсчитать количество вхождений каждого символа в строку
например у Вас есть строка: asddsg В выходной файле, куда Вы запишите результаты работы программы...

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

12
ArtMaster
26 / 24 / 8
Регистрация: 27.10.2012
Сообщений: 74
19.12.2012, 23:34 2
почему switch не подходит?!
0
andyoO
1 / 1 / 1
Регистрация: 19.12.2012
Сообщений: 68
19.12.2012, 23:35  [ТС] 3
подходит, но там 80+ символов нужно вводить, плюс выдает ошибки..
0
Ichimaru
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 22
19.12.2012, 23:40 4
!!!!!
0
ArtMaster
26 / 24 / 8
Регистрация: 27.10.2012
Сообщений: 74
19.12.2012, 23:42 5
C++
1
2
3
4
5
6
7
8
9
10
 string a="dskmcvskdnvksdnkvnsdvnsdlv";
string s="dn";//тут символы
int b[s.length()];
for(int i=0;i<s.length();i++){
   b[i]=0;
  for(int j=0;j<a.length();j++){
     if(a[j]==s[i]) b[i]++;
  }
  cout<<b[i]<<" ";
}
2
andyoO
1 / 1 / 1
Регистрация: 19.12.2012
Сообщений: 68
19.12.2012, 23:50  [ТС] 6
ArtMaster, а еще такой вопрос.. как связать прогу с текстовым файлом? т.к. текст задан в файле..
0
Croessmah
++Ͻ
16155 / 9246 / 1774
Регистрация: 27.09.2012
Сообщений: 22,794
Записей в блоге: 2
Завершенные тесты: 2
20.12.2012, 00:05 7
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 <iostream>
#include <iomanip>
 
char * findchar(char * str, char ch){
    for(;*str;++str)
        if (*str==ch) return str;
    return NULL;
}
 
 
int main(){
    char txt[]="my text. mmoh yuignnhjdc";
    char fstr[]="mceyu.lkgh";
    int slen=strlen(fstr);
    int * countchar=new int[slen];
    memset(countchar,0,slen*sizeof(*countchar));
    for(char *p=txt,*pf;*p;++p){
        if (pf=findchar(fstr,*p)) {
            ++(countchar[pf-fstr]);
        }
    }
    std::cout<<"Text:\n"<<txt;
    std::cout<<"\nFind:\n"<<fstr<<std::endl;
    for(int i=0;i<slen;++i){
        std::cout<<"Char "<<fstr[i]<<std::setw(3)<<countchar[i]<<std::endl;
    }
    delete [] countchar;
    std::cin.get();
    return 0;
}
Добавлено через 8 минут
Цитата Сообщение от ArtMaster Посмотреть сообщение
C++
1
int b[s.length()];
уточню - только GNU VLA
1
Croessmah
++Ͻ
16155 / 9246 / 1774
Регистрация: 27.09.2012
Сообщений: 22,794
Записей в блоге: 2
Завершенные тесты: 2
20.12.2012, 00:26 8
Цитата Сообщение от andyoO Посмотреть сообщение
а еще такой вопрос.. как связать прогу с текстовым файлом? т.к. текст задан в файле..
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
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstring>
char * findchar(char * str, char ch){
    for(;*str;++str)
        if (*str==ch) return str;
    return NULL;
}
 
 
int main(){
    std::ifstream file("input.txt",std::ios_base::binary);
    file.seekg(0,std::ios::end);
    int txtlen=file.tellg();
    file.seekg(0,std::ios::beg);
    char * txt=new char[txtlen+1];
    file.read(txt,txtlen);
    txt[txtlen]=0;
    char fstr[]="mceyu.lkgh";
 
    int slen=strlen(fstr);
    int * countchar=new int[slen];
    memset(countchar,0,slen*sizeof(*countchar));
    for(char *p=txt,*pf;*p;++p){
        if (pf=findchar(fstr,*p)) {
            ++(countchar[pf-fstr]);
        }
    }
    std::cout<<"Text:\n"<<txt;
    std::cout<<"\nFind:\n"<<fstr<<std::endl;
    for(int i=0;i<slen;++i){
        std::cout<<"Char "<<fstr[i]<<std::setw(5)<<countchar[i]<<std::endl;
    }
    delete [] countchar;
    delete [] txt;
    std::cin.get();
    return 0;
}
Подсчитать количество вхождений в тексте каждого из символов массива
1
andyoO
1 / 1 / 1
Регистрация: 19.12.2012
Сообщений: 68
20.12.2012, 00:29  [ТС] 9
всем спасибо огромное, выручили)
0
andyoO
1 / 1 / 1
Регистрация: 19.12.2012
Сообщений: 68
25.12.2012, 09:04  [ТС] 10
error C2039: setw: не является членом "std"
error C3861: setw: идентификатор не найден
0
Croessmah
++Ͻ
16155 / 9246 / 1774
Регистрация: 27.09.2012
Сообщений: 22,794
Записей в блоге: 2
Завершенные тесты: 2
25.12.2012, 20:13 11
Цитата Сообщение от andyoO Посмотреть сообщение
error C2039: setw: не является членом "std"
error C3861: setw: идентификатор не найден
подключен хедер?
C++
1
#include <iomanip>
0
nonameprogger
1 / 1 / 0
Регистрация: 15.02.2018
Сообщений: 117
12.05.2018, 10:59 12
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 <iostream>
#include <iomanip>
 
char * findchar(char * str, char ch){
    for(;*str;++str)
        if (*str==ch) return str;
    return NULL;
}
 
 
int main(){
    char txt[]="my text. mmoh yuignnhjdc";
    char fstr[]="mceyu.lkgh";
    int slen=strlen(fstr);
    int * countchar=new int[slen];
    memset(countchar,0,slen*sizeof(*countchar));
    for(char *p=txt,*pf;*p;++p){
        if (pf=findchar(fstr,*p)) {
            ++(countchar[pf-fstr]);
        }
    }
    std::cout<<"Text:\n"<<txt;
    std::cout<<"\nFind:\n"<<fstr<<std::endl;
    for(int i=0;i<slen;++i){
        std::cout<<"Char "<<fstr[i]<<std::setw(3)<<countchar[i]<<std::endl;
    }
    delete [] countchar;
    std::cin.get();
    return 0;
}
как реализовать ввод с клавиатуры?

допустим
C++
1
2
cout<< "vvedi txt";
cin>>...
Добавлено через 30 минут
Croessmah,
0
Yetty
3453 / 2365 / 1528
Регистрация: 18.12.2017
Сообщений: 7,551
12.05.2018, 14:12 13
Цитата Сообщение от nonameprogger Посмотреть сообщение
как реализовать ввод с клавиатуры?
C++
1
2
3
char s[256];
cout << "Enter text:\n";
cin.getline(s, 256);
или через string:

C++
1
2
3
string s;
cout << "Enter text:\n";
getline(cin, s);
0
12.05.2018, 14:12
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2018, 14:12

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Подсчитать количество вхождений в строку заданной последовательности символов
Дана строка символов. Подсчитать количество вхождений в строку заданной последовательности...

Подсчитать количество вхождений слова «мама» в строку и вывести номера первых позиций этих вхождений
Помогите исправить ошибку. Как вывести номера первых позиций вхождений слова мама? Подсчитать...

Дана строка символов. Подсчитать общее число вхождений символов .,+ в строку
Здравствуйте. Дана строка символов. Подсчитать общее число вхождений символов .,+ в строку. Как...


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

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

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