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

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

Восстановить пароль Регистрация
 
Murlik
4 / 4 / 1
Регистрация: 30.04.2013
Сообщений: 39
30.04.2013, 13:39     Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся этой буквой #1
Дан символ '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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2013, 13:39     Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся этой буквой
Посмотрите здесь:

Создать новый файл, содержащий квадраты всех элементов исходного файла C++
C++ Дан файл целых чисел. Создать новый файл целых чисел, содержащий длины всех серий исходного файла.
Дан текстовый файл. Вывести все слова, начинающиеся с заданной буквы C++
Дан файл целых чисел. Создать новый файл целых чисел, содержащий длины всех серий исходного файла C++
C++ Дан строковый файл. Создать новый строковый файл, содержащий все строки исходного файла наименьшей длины (в том же порядке).
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
30.04.2013, 15:28     Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся этой буквой #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;
Murlik
4 / 4 / 1
Регистрация: 30.04.2013
Сообщений: 39
30.04.2013, 16:00  [ТС]     Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся этой буквой #3
14 copy_if' is not a member of `std'
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
30.04.2013, 16:07     Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся этой буквой #4
Быть такого не может, это стандартный алгоритм. Вы весь код подставили, как есть, а то там последняя скобка пропущена случайно?
Murlik
4 / 4 / 1
Регистрация: 30.04.2013
Сообщений: 39
30.04.2013, 16:21  [ТС]     Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся этой буквой #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
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
30.04.2013, 17:38     Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся этой буквой #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;
}
Murlik
4 / 4 / 1
Регистрация: 30.04.2013
Сообщений: 39
30.04.2013, 18:38  [ТС]     Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся этой буквой #7
DEV-C++

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

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

Добавлено через 26 секунд
для второго примера
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2013, 00:52     Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся этой буквой
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
01.05.2013, 00:52     Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся этой буквой #8
boost имеется?
Yandex
Объявления
01.05.2013, 00:52     Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся этой буквой
Ответ Создать тему
Опции темы

Текущее время: 05:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru