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

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

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

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

Поиск в текстовом файле всех слов, заданных в другом текстом файле
Вообщем такое задание: Поиск в текстовом файле всех слов, заданных в другом...

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

Поиск в текстовом файле
Всем привет! Нужно на С++ написать программу,в поиске похожего не нашёл. Вот...

Поиск в текстовом файле
Есть тестовый файл такого типа: Имя: Плотник Трудоемкость: 32 Время: 22...

Поиск в текстовом файле
Добрый вечер еще разок. Никак не могу сообразить, как реализовать следующий...

14
Fixer_84
1148 / 718 / 691
Регистрация: 30.04.2016
Сообщений: 2,429
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
1148 / 718 / 691
Регистрация: 30.04.2016
Сообщений: 2,429
19.05.2016, 21:42 4
Лучший ответ Сообщение было отмечено lllenium как решение

Решение

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
1148 / 718 / 691
Регистрация: 30.04.2016
Сообщений: 2,429
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
1148 / 718 / 691
Регистрация: 30.04.2016
Сообщений: 2,429
21.05.2016, 14:49 8
Лучший ответ Сообщение было отмечено lllenium как решение

Решение

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
1148 / 718 / 691
Регистрация: 30.04.2016
Сообщений: 2,429
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
1148 / 718 / 691
Регистрация: 30.04.2016
Сообщений: 2,429
25.05.2016, 17:55 13
Лучший ответ Сообщение было отмечено lllenium как решение

Решение

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
1148 / 718 / 691
Регистрация: 30.04.2016
Сообщений: 2,429
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

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

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

Поиск слова в текстовом файле
Нужно создать программу по поиску слова в текстовом файле. Есть вот-такой вот...


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

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

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