0 / 0 / 0
Регистрация: 24.11.2018
Сообщений: 5
1

Переход на новую строку при нахождении цифры или знака препинания

22.12.2021, 19:27. Показов 1091. Ответов 6

Author24 — интернет-сервис помощи студентам
Здравствуйте, нужна помощь, можете как-нибудь помочь доработать мой код. На вход идёт текстовый файл и его строки с данными. Если в строке нашелся знак препинания, нужно эту строку скопировать в result1.txt, если цифра - в result2.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
char x[10] = { '?', '!', '.', ',', ';', ':', '-', '"', '(', ')' };
    char y[10] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
    string getcontent;
    char str[80];
 
    ifstream fout("resource.txt");
    ofstream fout1("result1.txt");
    ofstream fout2("result2.txt");
 
    cout << "Данные текстового файла resource.txt: " << endl;
    cout << endl;
    while (!fout.eof())
    {
        fout.getline(str, 80);
        getcontent = str;
         cout << str << endl;   
         
 
         for (int j = 1; j < getcontent.length(); j++)
         {
             for (int i = 1; i < 10 ; i++)
             {
                 if ((str[j] == x[i]) || (str[j] == y[i]))
                 {
                     if (str[j] == x[i])
                     {
                         fout1 << str << endl; 
                         break;
                     }
                     if (str[j] == y[i])
                     {
                         fout2 << str << endl;
                         break;
                     }
                 }
             }
         }
    fout.close();
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.12.2021, 19:27
Ответы с готовыми решениями:

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

Как заменить переход на новую строку на пробел, а пустую строку на переход на новую строку?
Подскажите как из одного текстового файла, в котором в каждом ряде содержится не больше одного...

Переход на новую строку при записи в файл
Подскажите как перейти на новую строку при записи в файл. Пробовал вот таким путем, не сработало:...

Переход на новую строку при записи в файл
Привет всем, я пишу такую программу.. С клавиатуры вводятся две матрицы, на выбор пользователя она...

Переход каретки на новую строку при вставке
Как сделать чтобы при вставке из буфера обмена (ctrl+v или правой кнопкой мыши и вставить) в Memo,...

6
7780 / 6550 / 2981
Регистрация: 14.04.2014
Сообщений: 28,608
22.12.2021, 20:08 2
goto?
0
0 / 0 / 0
Регистрация: 24.11.2018
Сообщений: 5
22.12.2021, 20:13  [ТС] 3
А можете реализовать на моём примере?
0
7780 / 6550 / 2981
Регистрация: 14.04.2014
Сообщений: 28,608
22.12.2021, 22:48 4
Лучший ответ Сообщение было отмечено Lilith12 как решение

Решение

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
    while (fout.getline(str, 80))
    {
        getcontent = str;
         cout << str << endl;   
         
 
         for (int j = 1; j < getcontent.length(); j++)
         {
             for (int i = 1; i < 10 ; i++)
             {
                 if ((str[j] == x[i]) || (str[j] == y[i]))
                 {
                     if (str[j] == x[i])
                     {
                         fout1 << str << endl; 
                         goto next;
                     }
                     if (str[j] == y[i])
                     {
                         fout2 << str << endl;
                         goto next;
                     }
                 }
             }
         }
        next:
    }
1
0 / 0 / 0
Регистрация: 24.11.2018
Сообщений: 5
23.12.2021, 08:34  [ТС] 5
Сможете ещё помочь?
Нужно ещё добавить возможность выгрузки строк в оба файла, если в одной строке находятся И знак И цифра, уже сколько пытаюсь, не выходит, можно как-нибудь попробовать иначе, оставить дубликацию, но отсортировать их уникальными значениями, правда я это ещё не знаю как сделать
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
24.12.2021, 01:39 6
Цитата Сообщение от nmcf Посмотреть сообщение
goto?
не рекомендуется

Lilith12,
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main()
{
    ifstream in("resource.txt");
    ofstream out1("result1.txt");
    ofstream out2("result2.txt");    
    
    if (in.is_open() && out1.is_open() && out2.is_open())
    {    
        string s;
        while (getline(in,s))
        {
            if(s.find_first_of("?!.,;:-()")!=string::npos ||  
            s.find('"')!=string::npos) out1 << s << "\n";       
            if(s.find_first_of("0123456789")!=string::npos) out2 << s << "\n";        
        }
        
        cout << "Files are written\n";
        
    in.close();
    out1.close();
    out2.close();
    } 
    else cout << "Unable to open file\n"; 
 
system("pause");   
return 0;
}
0
7780 / 6550 / 2981
Регистрация: 14.04.2014
Сообщений: 28,608
25.12.2021, 20:00 7
Цитата Сообщение от Yetty Посмотреть сообщение
не рекомендуется
Если правильно использовать, то нормально. Особенно для того варианта.
0
25.12.2021, 20:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2021, 20:00
Помогаю со студенческими работами здесь

Переход на новую строку при записи в файл
Вот скрипт &lt;?php $file=fopen('mes.txt','a+'); fwrite($file,$_POST); fwrite($file,$_POST);...

StarUML, переход на новую строку при вводе
Как перейти на новую строку, вводя имя объекта? Пробовал Shift+Enter, &quot;\n&quot; - не помогает.

Переход на новую строку при записи в файл.
Вот код: &lt;? @ $fin = fopen(&quot;menu.txt&quot;, &quot;r&quot;) or die(&quot;File Menu not found!&quot;); $fout =...

Переход на новую строку при считывании из файла
Мне нужно прочитать из файла структуру Student, в которой указываются такие данные студента:...

Переход на новую строку при чтении текстового файла
Здравствуйте! При чтении файла при помощи ReadLine не могу найти способ перейти на новую строку...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru