Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Murlik
4 / 4 / 0
Регистрация: 30.04.2013
Сообщений: 51
#1

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

30.04.2013, 13:39. Просмотров 715. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2013, 13:39
Ответы с готовыми решениями:

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

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

Дано число k (< 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного файла
Дано число k (&lt; 10) и текстовый файл, содержащий более k строк. Создать новый...

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

Дан текстовый файл. Вывести все слова, начинающиеся с заданной буквы
Дан текстовый файл. Вывести все слова, начинающиеся с заданной буквы (к примеру...

7
DiffEreD
1442 / 779 / 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
Murlik
4 / 4 / 0
Регистрация: 30.04.2013
Сообщений: 51
30.04.2013, 16:00  [ТС] #3
14 copy_if' is not a member of `std'
0
DiffEreD
1442 / 779 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
30.04.2013, 16:07 #4
Быть такого не может, это стандартный алгоритм. Вы весь код подставили, как есть, а то там последняя скобка пропущена случайно?
1
Murlik
4 / 4 / 0
Регистрация: 30.04.2013
Сообщений: 51
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
DiffEreD
1442 / 779 / 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
Murlik
4 / 4 / 0
Регистрация: 30.04.2013
Сообщений: 51
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
Croessmah
++Ͻ
14365 / 8147 / 1533
Регистрация: 27.09.2012
Сообщений: 20,082
Записей в блоге: 3
Завершенные тесты: 1
01.05.2013, 00:52 #8
boost имеется?
0
01.05.2013, 00:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2013, 00:52

Дан файл целых чисел. Создать новый файл целых чисел, содержащий длины всех серий исходного файла.
Задачу нужно решить в Borland C++ 3.11 Дан файл целых чисел. Создать новый файл...

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

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


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

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

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