Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
5 / 5 / 0
Регистрация: 30.04.2013
Сообщений: 60

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

30.04.2013, 13:39. Показов 2012. Ответов 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.04.2013, 13:39
Ответы с готовыми решениями:

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

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

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

7
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
30.04.2013, 15:28
Такой вариант подойдет?:
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
Сообщений: 60
30.04.2013, 16:00  [ТС]
14 copy_if' is not a member of `std'
0
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
30.04.2013, 16:07
Быть такого не может, это стандартный алгоритм. Вы весь код подставили, как есть, а то там последняя скобка пропущена случайно?
1
5 / 5 / 0
Регистрация: 30.04.2013
Сообщений: 60
30.04.2013, 16:21  [ТС]
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;
Вот так, может я что не так делаю???
ошибки
Code
1
2
3
4
5
6
7
8
9
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
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
30.04.2013, 17:38
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
Сообщений: 60
30.04.2013, 18:38  [ТС]
DEV-C++

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

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

Добавлено через 26 секунд
для второго примера
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,028
Записей в блоге: 1
01.05.2013, 00:52
boost имеется?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.05.2013, 00:52
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru