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

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

Войти
Регистрация
Восстановить пароль
 
lllenium
0 / 0 / 0
Регистрация: 21.12.2015
Сообщений: 17
#1

Поиск символа в текстовом файле - C++

18.05.2016, 19:57. Просмотров 627. Ответов 14
Метки нет (Все метки)

Как можно организовать поиск введенного символа в txt файле?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2016, 19:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск символа в текстовом файле (C++):

Поиск в текстовом файле всех слов, заданных в другом текстом файле - C++
Вообщем такое задание: Поиск в текстовом файле всех слов, заданных в другом текстом файле; Не могу понять почему не работает: ...

Подскажите пожалуйста как в текстовом файле выделить два последних символа - C++
Подскажите пожалуйста как в текстовом файле выделить два последних символа

Поиск в текстовом файле - C++
Всем привет! Нужно на С++ написать программу,в поиске похожего не нашёл. Вот сама задача - Имеются два текстовых файла. Определить в каком...

Поиск в текстовом файле - C++
Добрый вечер еще разок. Никак не могу сообразить, как реализовать следующий алгоритм (представляю его так): есть база (назовем ее...

Поиск в текстовом файле - C++
Здравствуйте, нужно осуществить поиск нужной строки в файле .txt. Как быть?

Поиск в текстовом файле - C++
Есть тестовый файл такого типа: Имя: Плотник Трудоемкость: 32 Время: 22 Квалификация: бывалый Необходимо создать поиск по...

14
Fixer_84
721 / 532 / 269
Регистрация: 30.04.2016
Сообщений: 1,534
18.05.2016, 20:24 #2
lllenium, что именно вам нужно? Сколько раз встречается заданный символ? Или нужно заменить один символ на другой. Может быть, что-то еще?
0
lllenium
0 / 0 / 0
Регистрация: 21.12.2015
Сообщений: 17
19.05.2016, 10:37  [ТС] #3
Нужно найти этот символ, и ту строку где он находится перенести в конец txt файла.
0
Fixer_84
721 / 532 / 269
Регистрация: 30.04.2016
Сообщений: 1,534
19.05.2016, 21:42 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
lllenium, смотрите код ниже. Я ищу ту строчку, в которой этот символ встречается впервые.
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
#include <iostream>
#include <cmath>
#include <fstream>
 
using namespace std;
 
int main()
{
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    int k, p, min;
    string a, b;
    k = 0;
    min = 100;
    while(getline(fin, a))
    {
        for (int i = 0; i < a.length(); i++)
        {
            if (a[i] == '*') //Здесь ваш символ
            {
                p = k;
                if (p <= min) 
                {
                    min = p;
                    b = a;
                }
                break;
            }
        }
        fout << a << endl;
        k++;
    }
    fout << b << endl;
    fin.close();
    fout.close();
    system("pause"); 
    return 0;   
}
1
lllenium
0 / 0 / 0
Регистрация: 21.12.2015
Сообщений: 17
19.05.2016, 21:54  [ТС] #5
Спасибо большое А как сделать, чтобы пользователь при запуске программы сам вводил искомый символ?
0
Fixer_84
721 / 532 / 269
Регистрация: 30.04.2016
Сообщений: 1,534
19.05.2016, 22:29 #6
lllenium, ниже код с учетом ваших пожеланий.
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
#include <iostream>
#include <cmath>
#include <string>
#include <fstream>
 
using namespace std;
 
int main()
{
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    int k, p, min;
    string a, b;
    char sym;
    cout << "Введите искомый символ: ";
    cin >> sym;
    k = 0;
    min = 100; //Здесь максимальное число строк файла
    while (getline(fin, a))
    {
        for (int i = 0; i < a.length(); i++)
        {
            if (a[i] == sym) //Здесь ваш символ
            {
                p = k;
                if (p <= min) 
                {
                    min = p;
                    b = a;
                }
                break;
            }
        }
        fout << a << endl;
        k++;
    }
    fout << b << endl;
    fin.close();
    fout.close();
    system("pause"); 
    return 0;   
}
1
lllenium
0 / 0 / 0
Регистрация: 21.12.2015
Сообщений: 17
21.05.2016, 13:48  [ТС] #7
Fixer_84 простите за беспокойство, но мне снова нужна ваша помощь
Нужно чтобы после ввода искомого символа, программа еще и предлагала пользователю сколько раз он хочет перенести строку, сейчас она переносит строку только один раз.
0
Fixer_84
721 / 532 / 269
Регистрация: 30.04.2016
Сообщений: 1,534
21.05.2016, 14:49 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
lllenium, ниже ответ на ваш вопрос.

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 <cmath>
#include <string>
#include <fstream>
 
using namespace std;
 
int main()
{
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    int k, p, min, N;
    string a, b;
    char sym;
    cout << "Введите искомый символ: ";
    cin >> sym;
    cout << "Сколько раз перенести строку: ";
    cin >> N;
    k = 0;
    min = 100; 
    while (getline(fin, a))
    {
        for (int i = 0; i < a.length(); i++)
        {
            if (a[i] == sym) 
            {
                p = k;
                if (p <= min) 
                {
                    min = p;
                    b = a;
                }
                break;
            }
        }
        fout << a << endl;
        k++;
    }
    for (int i = 0; i < N; i++)
    {
    fout << b << endl;
    }
    fin.close();
    fout.close();
    system("pause"); 
    return 0;   
}
1
lllenium
0 / 0 / 0
Регистрация: 21.12.2015
Сообщений: 17
21.05.2016, 16:16  [ТС] #9
Благодарю!
0
Klla
0 / 0 / 0
Регистрация: 24.05.2016
Сообщений: 2
24.05.2016, 13:08 #10
А можно ли сделать так, чтобы при вводе искомого символа, программа искала его сразу во всем txt файле и все строки с этим символом переносила в конец txt файла. Просто сейчас она ищет первый попавшийся
0
Fixer_84
721 / 532 / 269
Регистрация: 30.04.2016
Сообщений: 1,534
24.05.2016, 17:48 #11
Klla, конечно можно Вот программа, отвечающая на ваш вопрос.

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 <cmath>
#include <string>
#include <vector>
#include <fstream>
 
using namespace std;
 
int main()
{
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    string a, b;
    vector<std::string> c; 
    char sym;
    cout << "Введите искомый символ: ";
    cin >> sym; 
    while (getline(fin, a))
    {
        for (int i = 0; a[i]; i++)
        {
            if (a[i] == sym) 
            {
                b = a;
                c.push_back(b);
                break;
            }
        }
        fout << a << endl;
    }
    for (int i = 0; i < c.size(); i++)
    {
    fout << c[i] << endl;
    }
    fin.close();
    fout.close();
    system("pause"); 
    return 0;   
}
1
Klla
0 / 0 / 0
Регистрация: 24.05.2016
Сообщений: 2
25.05.2016, 01:13 #12
Спасибо , но здесь отсутствует функция количества перевода строк("Сколько раз перенести строку"), мне она тоже нужна, доработайте код если вас это не затруднит).
0
Fixer_84
721 / 532 / 269
Регистрация: 30.04.2016
Сообщений: 1,534
25.05.2016, 17:55 #13
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Klla, вот доработанная программа. Надеюсь, это то что нужно.

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 <cmath>
#include <string>
#include <vector>
#include <fstream>
 
using namespace std;
 
int main()
{
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    string a, b;
    vector<std::string> c; 
    char sym;
    int N, k;
    cout << "Введите искомый символ: ";
    cin >> sym; 
    cout << "Сколько раз перенести строки: ";
    cin >> N;
    while (getline(fin, a))
    {
        for (int i = 0; a[i]; i++)
        {
            if (a[i] == sym) 
            {
                b = a;
                c.push_back(b);
                break;
            }
        }
        fout << a << endl;
    }
    k = 0;
    while (k < N)
    {
    for (int i = 0; i < c.size(); i++)
    {
    fout << c[i] << endl;
    }
    k++;
    }
    fin.close();
    fout.close();
    system("pause"); 
    return 0;   
}
1
lllenium
0 / 0 / 0
Регистрация: 21.12.2015
Сообщений: 17
29.05.2016, 16:07  [ТС] #14
Здравствуйте, не так давно вы по моей просьбе делали программу для поиска символа и переноса строк.
Она работает, но она не переносит строку, а копирует ее и вставляет в конец. Нужно чтобы она именно переносила строку, т.е. если строка первая в txt файле и в ней нужный символ, строка переходит в конец txt файла.

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
#include <iostream>
#include <cmath>
#include <string>
#include <vector>
#include <fstream>
#include <stdlib.h>
 
using namespace std;
 
int main()
{   
    setlocale(LC_ALL, "Russian");
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    string a, b;
    vector<std::string> c;
    char sym;
    int N, k;
    cout << "Введите символ: ";
    cin >> sym;
    cout << "Сколько раз перенести строки?: ";
    cin >> N;
    while (getline(fin, a))
    {
        for (int i = 0; a[i]; i++)
        {
            if (a[i] == sym)
            {
                b = a;
                c.push_back(b);
                break;
            }
        }
        fout << a << endl;
    }
    k = 0;
    while (k < N)
    {
    for (int i = 0; i < c.size(); i++)
    {
    fout << c[i] << endl;
    }
    k++;
    }
    fin.close();
    fout.close();
    printf ("Строки с символами перемещены, для просмотра откройте выходной файл \n");
    system("pause");
    return 0;
}
0
Fixer_84
721 / 532 / 269
Регистрация: 30.04.2016
Сообщений: 1,534
04.06.2016, 15:39 #15
lllenium, никогда этого не делал. Вот программа. Надеюсь, она вас устроит.

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
#include <iostream>
#include <cmath>
#include <string>
#include <vector>
#include <fstream>
 
using namespace std;
 
int main()
{
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    string a, b;
    vector<std::string> c; 
    char sym;
    int N, k;
    cout << "Введите искомый символ: ";
    cin >> sym; 
    cout << "Сколько раз перенести строки: ";
    cin >> N;
    while (getline(fin, a))
    {
        for (int i = 0; a[i]; i++)
        {
            if (a[i] == sym) 
            {
                b = a;
                c.push_back(b);
                a = "\t"; 
                break;
            }
        }
        if (a != "\t")
        fout << a << endl;
    }
    k = 0;
    while (k < N)
    {
    for (int i = 0; i < c.size(); i++)
    {
    fout << c[i] << endl;
    }
    k++;
    }
    fin.close();
    fout.close();
    system("pause"); 
    return 0;   
}
1
04.06.2016, 15:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2016, 15:39
Привет! Вот еще темы с ответами:

Поиск в текстовом файле со структурой - C++
Здравствуйте! подскажите пожалуйста как грамотно реализовать поиск по структуре из текстового файла. вот что пока написано: ...

Поиск слова в текстовом файле - C++
Программа ищет заданное слово в файле с текстом, в результате нужно вывести на экран этот же текст, где заданное слово будет выделено...

Поиск и сортировка в текстовом файле - C++
В программирование не силен только начал изучать есть задача.Есть текстовый файл такого плана вторник 1 21.03.2014 маша купила...

Не работает поиск в текстовом файле - C++
Я хочу чтобы данные которые я ввожу , записывались в файл с пробелами и считывались на экран(так же с пробелами). Все получилось , но не...


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

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

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