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

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

Войти
Регистрация
Восстановить пароль
 
Александр9797
1 / 1 / 0
Регистрация: 17.11.2015
Сообщений: 395
#1

Удалить из текста, находящегося в файле, каждое четное предложение - C++

18.11.2015, 17:26. Просмотров 344. Ответов 9
Метки нет (Все метки)

Не могу разобраться объясните как прописать путь к txt

Добавлено через 9 минут
спасибо уже сделал
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2015, 17:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удалить из текста, находящегося в файле, каждое четное предложение (C++):

Удалить из текста, находящегося в файле, каждое четное предложение - C++
Help

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

Удалить из текста, находящегося в файле, каждое четное предложение. - C++
Удалить из текста, находящегося в файле, каждое четное предложение.

Удалить из текста, находящегося в файле, каждое четное предложение. - C++
Удалить из текста, находящегося в файле, каждое четное предложение.

Удалить из текста, находящегося в файле, каждое четное предложение - C++
Написать прогу. Удалить из текста, находящегося в файле, каждое четное предложение на СИ

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Александр9797
1 / 1 / 0
Регистрация: 17.11.2015
Сообщений: 395
19.11.2015, 12:57  [ТС] #2
НАШЕЛ ПОЧТИ ПОХОЖЕЕ НО ОНО НЕ РАБОТАЕТ. ПОМОГИТЕ СДЕЛАТЬ.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <clocale>
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <fstream>
 
int _tmain(int argc,_TCHAR* argv[])
{
using namespace std;
setlocale(LC_ALL,"Russian");
 
ifstream input_file("text.DAT");
char one[64], two[64], three[64];
input_file.getline(one, sizeof(one));
input_file.getline(two, sizeof(two));
input_file.getline(three, sizeof(three));
cout <<one<<end;
cout <<two<<end;
cout <<three<<end;
getch();
system("pause"); 
return 0;
}
0
Александр9797
1 / 1 / 0
Регистрация: 17.11.2015
Сообщений: 395
19.11.2015, 13:44  [ТС] #3
Сделал что бы программа открывало текст. Теперь не знаю как сделать так что бы удалить из него четные предложения. Подскажите как это сделать.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream> 
#include <cstdio>
using namespace std; 
void main() 
{ 
setlocale(LC_ALL,".1251");
FILE *in = fopen(".\\main\\in.txt","r");
if(in==NULL) 
{ 
cout«"Ошибка в открытии файла in.txt"«endl; 
} 
else 
{ 
char str[64];
fgets(str,64,in);
while(!feof(in)) 
{ 
cout«str;
fgets(str,64,in); 
} 
fcloseall(); 
} 
}
0
Lensato
49 / 49 / 24
Регистрация: 07.10.2015
Сообщений: 170
19.11.2015, 14:50 #4
Считаем, что конец предложения найден, если обнаружены подряд два символа: точка и пробел
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 <cstdio>
 
using std::cout;
using std::cin;
using std::endl;
 
void main()
{
    setlocale(LC_ALL, ".1251");
 
    FILE *f_source = fopen(".\\main\\in.txt", "r");
    if (f_source == NULL)
    {
        cout << "Ошибка в открытии файла in.txt" << endl;
    }
    else
    {
        FILE *f_destination = fopen(".\\main\\out.txt", "w");
        char ch;
        char *str = new char[2];
        str[1] = '\0';
 
        char first_symbol = '0';
        char second_symbol = '0';
        bool it_is_odd = true;
 
        while (!feof(f_source))
        {
            ch = fgetc(f_source);
 
            first_symbol = second_symbol;
            second_symbol = ch;
 
            if (first_symbol == '.' && (second_symbol == ' ' || second_symbol == '\t' || second_symbol == '\n'))
                it_is_odd = !it_is_odd;
 
            if (it_is_odd)
            {
                str[0] = ch;
                fprintf(f_destination, str);
            }
        }
 
        fcloseall();
    }
 
    system("pause");
}
0
Александр9797
1 / 1 / 0
Регистрация: 17.11.2015
Сообщений: 395
19.11.2015, 15:27  [ТС] #5
что не пойму как это программам работает. Если не сложно объясните словами.
0
Lensato
49 / 49 / 24
Регистрация: 07.10.2015
Сообщений: 170
19.11.2015, 15:38 #6
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
while (!feof(f_source)) // цикл, пока файл не кончился
    {
        ch = fgetc(f_source);   // считать 1 символ (допустим это пробел ' '
 
        // допустим было было:
        // first_symbol = 'н'
        // second_symbol = '.'
 
        first_symbol = second_symbol;   
        second_symbol = ch;
 
        // тогда стало:
        // first_symbol = '.'
        // second_symbol = ' '
 
        if (first_symbol == '.' && (second_symbol == ' ' || second_symbol == '\t' || second_symbol == '\n'))    // если первый символ - точка, а второй - пробел, табуляция или перенос строки, то преложение закончилось
            it_is_odd = !it_is_odd;     // в первый раз it_is_odd = true (и это было 1-е предложение, т.е. нечетное) тепрь it_is_odd = true (т.е. теперь читаем четное предложение)
 
        if (it_is_odd)  // если предложение нечетное
        {
            str[0] = ch;    // делаем из символа ch строку str = { 'ch', '\0' }, так как функция fprintf не может принять одиночный символ
            fprintf(f_destination, str);    // пишем в новый файл нашу строку (т.е. один символ)
        }
        // а если предложенеи четное, то ничего не делаем, читаем символы дальше, пока файл не кончится
    }
0
Александр9797
1 / 1 / 0
Регистрация: 17.11.2015
Сообщений: 395
19.11.2015, 15:59  [ТС] #7
это программа работает не правильно. Она создает 2-й txt файл и в него пишет тоже самое что и в 1-м txt файле.

Добавлено через 17 секунд
или я может что напутал.
0
Lensato
49 / 49 / 24
Регистрация: 07.10.2015
Сообщений: 170
19.11.2015, 16:05 #8
Цитата Сообщение от Александр9797 Посмотреть сообщение
это программа работает не правильно. Она создает 2-й txt файл и в него пишет тоже самое что и в 1-м txt файле.
Если в исходном файле хоть раз встречается комбинация ". " - точка пробел, то до следующей такой же комбинации в новый файл ничего записываться не будет.
(а так же точка "табуляция" "перенос строки")
Если таких комбинаций нет, то запишется весь файл.
0
Александр9797
1 / 1 / 0
Регистрация: 17.11.2015
Сообщений: 395
19.11.2015, 16:12  [ТС] #9
Вес понял. Спасибо. Вы уж извините что так пристал
0
jurok_85
241 / 224 / 77
Регистрация: 21.02.2013
Сообщений: 519
Завершенные тесты: 1
19.11.2015, 16:16 #10
можно считать весь файл в вектор с помощью getline с делиметром "." а потом записать в этот же файл нечетные элементы вектора
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2015, 16:16
Привет! Вот еще темы с ответами:

В тексте удалить каждое четное слово, продублировать каждое нечетное слово - C++
Не могу решить данную задачу, много чего перечитал, за помощь буду благодарен В тексте удалить каждое четное слово, продублировать...

В тексте удалить каждое четное слово, продублировать каждое нечетное слово - C++
Не могу решить данную задачу, много чего перечитал, за помощь буду благодарен&quot; &quot;В тексте удалить каждое четное слово, продублировать...

Удалить каждое четное слово из строки - C++
Тема: строки в c++ Задание: Удалить каждое четное слово из строки.

Удалить каждое четное слово из строки - C++
Задача: Удалить каждое четное слово из строки. Это то что надо получить в конце, но т.к. я пытаюсь разобраться, хотелось бы по подробнее...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.11.2015, 16:16
Ответ Создать тему
Опции темы

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