Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 200
1

Нахождение символа и его количества

07.09.2019, 18:56. Показов 1059. Ответов 6
Метки нет (Все метки)

Всем доброго времени суток! Возникла такая проблема:
Есть файл (в нем буквы: a a a a a a)
Я считываю этот файл и данные записываю в массив.Далее мне необходимо найти элемент (который повторяется больше 1 раза) и вывести его
в формате: <элемент>: <количество>. С выводом я туплю конкретно, не могу ничего придумать. Помогите


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
    bool equal;
    string stroka;
    cout << "Введите название документа(не забывая указывать тип файла):"<<endl;
    cout << ">";
    getline(cin, stroka);
 
    ifstream read(stroka);
    while (!read.is_open()){
        cout << "Ошибка! Документ не найден, повторите попытку:"<<endl;
        cout << ">";
        getline(cin, stroka);
        ifstream read(stroka);
    }
    char *buff=new char[100];
 
    cout << "Содержимое текстового файла:"<<endl;
    int i =0;
    int count1=0;
    while (!read.eof())
    {
        read>>buff[i];
        cout << buff[i];
        ++count1;
        ++i;
    }
        read.close();
 cout << "\nСодержимое текстового файла:"<<endl;
    {
     bool erect = false;
 
        for (int x=0; x<count1-1; ++x){
             int count=0;
            for (int j=x+1; j<count1; ++j)
            {
                if (buff[x]==buff[j])
                {
                  count++;
                  erect = true;
                    }
                }
        if (erect == true){
        cout<<buff[x]<<":"<<count;
        erect = false;
            }
        }
 }
 cout << "\nСодержимое текстового файла:"<<endl;
 
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.09.2019, 18:56
Ответы с готовыми решениями:

Нахождение количества положительных и количества отрицательных элементов массива
Задан одномерный числовой массив. Постройте алгоритм и составьте программу нахождения количества...

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

Ввод символа из терминала, изменение регистра символа, вывод его в терминал (ассемблер)
Задача:Если вводимы элемент строчный, то перести его в заглавный(и наоборот). Пример:Ввели (a) -...

Нахождение символа
Дана строка символов.Найти в ней наиболее часто встречающийся символ.

6
6464 / 4397 / 2518
Регистрация: 18.12.2017
Сообщений: 13,744
07.09.2019, 20:29 2
Лучший ответ Сообщение было отмечено Magicspree как решение

Решение

с другой задачи, но думаю подойдёт:
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
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
 
int main()
{
    ifstream f("myfile.txt");
 
    if (f.is_open()) 
    {
    vector <char> v, v1;  
        
    char ch;
    while(f >> ch)
    {
    v.push_back(ch);
    }       
    
    v1=v;
    int n=v.size(), n1=n, count, k=0;
    
    for (int i = 0; i < n - 1; i++) 
    for (int j = i + 1; j < n; j++) 
    if (v[i]==v[j]) 
    { 
    for (int k = j; k < n-1; k++)  
    v[k]=v[k+1]; 
    n--;
    j--;
    }    
    
    for (int i = 0; i < n; i++)
    {
    count=0;    
    for (int j = 0; j < n1; j++)
    if (v[i]==v1[j]) count++;
    if (count!=1) {k++;cout << v[i] <<" - " << count << "\n";}
    }
    cout << "count=" << k << "\n"; 
    
    }
    else cout << "Unable to open file\n";      
   
system("pause");
return 0;
}
Добавлено через 8 минут
компактнее будет через map (ввод только добавьте какой Вам нужен)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
#include <map>
using namespace std;
 
int main() 
{
    string s;
    cout << "String:\n";
    getline(cin, s);
 
    map <char, int> m;
    for (size_t i = 0; i < s.size(); i++) m[s[i]]++;
    
    for (auto i = m.begin(); i != m.end(); i++)
    if (i->second!=1) cout << i->first << "->" << i->second << endl;   
system("pause");
return 0;
}
1
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 200
08.09.2019, 10:27  [ТС] 3
Спасибо большое за помощь Особенно с map

Добавлено через 36 минут
А еще не могли бы подсказать? Я ввожу название документа (специально неправильно) после чего программа выдает сообщение об ошибки, но если я напишу правильное название файла\, то он его снова не находит
C++
1
2
3
4
5
6
7
8
9
10
11
cout << "Введите название документа(не забывая указывать тип файла):"<<endl;
    cout << ">";
    getline(cin, stroka);
 
    ifstream read(stroka);
    while (!read.is_open()){
        cout << "Ошибка! Документ не найден, повторите попытку:"<<endl;
        cout << ">";
        getline(cin, stroka);
        ifstream read(stroka);
    }
0
6464 / 4397 / 2518
Регистрация: 18.12.2017
Сообщений: 13,744
08.09.2019, 12:09 4
Цитата Сообщение от Magicspree Посмотреть сообщение
если я напишу правильное название файла
напишите пример ввода названия файла
0
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 200
08.09.2019, 12:44  [ТС] 5
Извините, не совсем понял о чем вы
0
6464 / 4397 / 2518
Регистрация: 18.12.2017
Сообщений: 13,744
08.09.2019, 13:54 6
Цитата Сообщение от Magicspree Посмотреть сообщение
не совсем понял о чем вы
что Вы набираете, когда видите строку:
Цитата Сообщение от Magicspree Посмотреть сообщение
Введите название документа(не забывая указывать тип файла):
0
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 200
09.09.2019, 16:07  [ТС] 7
Я набираю test.txt (так как он есть у меня в папке) и это работает. Но когда я первый раз ввожу неправильно, а второй раз правильно, то он все равно выдает ошибку
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.09.2019, 16:07

Нахождение последнего символа
Подскажите, пожалуйста, как можно найти индекс последнего элемента в массиве символов, введенных...

Нахождение символа в файле
Доброго времени суток, нужно найти в файле строчку, где в конце стоит знак восклицания и вывести +,...

Нахождение символа в строке
Допустим есть: AnsiString data = &quot;sampe|sampe1|sample2|sample3|sample4&quot;; Мне нужно найти все...

Нахождение повторов символа
Дан текст. В каждом слове каждого предложения для повторяющихся литер произвести следующую...


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

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

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