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

Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся этой буквой

30.04.2013, 13:39. Показов 1587. Ответов 7
Метки нет (Все метки)

Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся этой буквой (как прописной, так и строчной). Знаки препинания, расположенные в начале и в конце слов, не учитывать. Если исходный файл не содержит подходящих слов, оставить результирующий файл пустым.
Удалось пока сделать перзапись из файла в файл, нужно СРОЧНО!!!


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
#include <iostream>//i/o
#include <fstream> //file/read
#include <conio.h> //getch
using namespace std;
 
int main()
{
    ifstream ifs;//Файловый поток для чтения
    ofstream ofs;//Файловый поток для записи
    std::cout<<"Enter FilePath to read : ";
    //Путь может быть как абсолютным так и относительным
    
    char sRead[256];std::cin.getline(sRead,256);
    std::cout<<"Enter FilePath to write : ";
    //Путь может быть как абсолютным так и относительным
    char sWrite[256];std::cin.getline(sWrite,256);
 
    char sLine[2048];//Буфер чтения, наиболее оптимальная его величина!
    //открываем файл для чтения
    ifs.open(sRead , ios::in);//ios::in|ios::binary - флаги доступа можно и без них
    if(!ifs)
        std::cout<<"Error open file to read";
    else
        //открываем файл для записи, в случае если файл чтения удалось открыть
    ofs.open(sWrite,ios::out);
    if(!ofs)
        std::cout<<"Error open file to write";
    else
    {
        while(!ifs.eof())//Читаем поток пока не достигнем конца
        {
            ifs.getline(sLine,2048);
            cout<<sLine;//Заодно светим строку в консоли
            
            
            ofs<<sLine;//пишем строку в ofs
            cout<<sLine;//Заодно светим строку в консоли
        }
        //Закрываем потоки, рекомендую это делать
        ifs.close();
        ofs.close();
    }
    std::cout<<"\r\nPress any key to continue\r\n";
    getch();
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.04.2013, 13:39
Ответы с готовыми решениями:

Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла
Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все...

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

Дан строковый файл. Создать новый строковый файл, содержащий все строки исходного файла наибольшей длины
Всем привет! Кто может помочь с двумя небольшими програмками по работе с файлами? Очень буду...

Дан строковый файл. Создать новый строковый файл, содержащий все строки исходного файла наибольшей длины (в обратном порядке)
Дан строковый файл. Создать новый строковый файл, содержащий все строки исходного файла наибольшей...

7
1456 / 793 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
30.04.2013, 15:28 2
Такой вариант подойдет?:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <fstream>
#include <algorithm>
#include <iterator>
 
int main () 
{
    std::ifstream ifs("D:/file.txt");
    const char ch = 'C';
    if (ifs.is_open())
    {
        std::ofstream ofs("D:/result.txt");
        std::copy_if(std::istream_iterator<std::string>(ifs), std::istream_iterator<std::string>(),
                std::ostream_iterator<std::string>(ofs,"\n"), [=](const std::string& s){return std::toupper(s.front())==ch;});
    }
    else
        std::cout<<"Error opening file.\n";
    
    return 0;
1
5 / 5 / 0
Регистрация: 30.04.2013
Сообщений: 56
30.04.2013, 16:00  [ТС] 3
14 copy_if' is not a member of `std'
0
1456 / 793 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
30.04.2013, 16:07 4
Быть такого не может, это стандартный алгоритм. Вы весь код подставили, как есть, а то там последняя скобка пропущена случайно?
1
5 / 5 / 0
Регистрация: 30.04.2013
Сообщений: 56
30.04.2013, 16:21  [ТС] 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <fstream>
#include <algorithm>
#include <iterator>
 
int main () 
{
    std::ifstream ifs("F1.txt");
    const char ch = 'C';// Присвоил константу
    if (ifs.is_open())
    {
        std::ofstream ofs("F2.txt");
        std::copy_if(std::istream_iterator<std::string>(ifs), std::istream_iterator<std::string>()),
                std::ostream_iterator<std::string>(ofs,"\n"), [=](const std::string& s){return std::toupper(s.front())==ch;});
    }
    else
        std::cout<<"Error opening file.\n";
    
    return 0;
Вот так, может я что не так делаю???
ошибки
Код
14 `copy_if' is not a member of `std'
15  expected primary-expression before '[' token  
15  expected primary-expression before '=' token 
15  expected primary-expression before ']' token 
15  expected primary-expression before "const" 
15  expected `;' before '{' token 
15  expected primary-expression before ')' token 
15  expected `;' before ')' token 
20  expected `}' at end of input
0
1456 / 793 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
30.04.2013, 17:38 6
Murlik, компилятор у вас какой, может лямбды не поддерживаются.

Добавлено через 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
24
25
26
27
28
#include <iostream>
#include <string>
#include <fstream>
#include <algorithm>
#include <iterator>
#include <boost/algorithm/string.hpp>
 
int main () 
{
    std::ifstream ifs("D:/file.txt");
    const char ch = 'C';
    if (ifs.is_open())
    {
        std::ofstream ofs("D:/result.txt");
        std::string curent;
        
        std::for_each(std::istream_iterator<std::string>(ifs), std::istream_iterator<std::string>(),
                [&ofs, &curent, ch](const std::string& s){
                    if (std::toupper(s.front()) != ch) return;
                    curent = s;
                    boost::trim_if(curent, boost::algorithm::is_punct());
                    ofs<<curent<<"\n";});
    }
    else
        std::cout<<"Error opening file.\n";
    
    return 0;
}
1
5 / 5 / 0
Регистрация: 30.04.2013
Сообщений: 56
30.04.2013, 18:38  [ТС] 7
DEV-C++

Добавлено через 41 секунду
Code::Blocks 8.02

Добавлено через 51 минуту
Не удается открыть файл включение: boost/algorithm/string.hpp: No such file or directory

Добавлено через 26 секунд
для второго примера
0
Неэпический
17807 / 10579 / 2042
Регистрация: 27.09.2012
Сообщений: 26,606
Записей в блоге: 1
01.05.2013, 00:52 8
boost имеется?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.05.2013, 00:52
Помогаю со студенческими работами здесь

Дан строковый файл. Создать новый строковый файл, содержащий все строки исходного файла наименьшей длины (в том же порядке).
Даны имена двух файлов вещественных чисел. Известно, что первый из них существует и является...

Создать строковый файл, содержащий все слова длины N из исходного файла
Дано целое число N и текстовый файл. Создать строковый файл, содержащий все слова длины N из...

Дано целое число N и текстовый файл. Создать новый файл, содержащий все слова длины N из исходного файла
Помогите, пожалуйста, с задачей :sigh: Дано целое число N и текстовый файл. Создать новый файл,...

Создать строковый файл и записать в него все слова из исходного файла, начинающиеся на эту букву (прописную или строчную)
Дан символ &quot;С&quot; - прописная (заглавная) русская буква и текстовый файл Создать строковый файл и...


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

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

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