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

Строки и файлы

05.11.2012, 01:21. Показов 1972. Ответов 12
Метки нет (Все метки)

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

Задание 2
Дана строка текста, в которой слова разделены пробелами и запятыми. Необходимо:


а) вывести каждое четное слово.

Строку инициализировать в коде программы:

So she was considering in her own mind, as well as she could, for the hot day made her feel very sleepy and stupid, whether the pleasure of making a daisy-chain would be worth the trouble of getting up and picking the daisies, when suddenly a White Rabbit with pink eyes ran close by her.


Задание 3

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

Текстовый файл создать в блокноте. Концом предложения считать символы '.', '!', '?'.



Заранее большое спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.11.2012, 01:21
Ответы с готовыми решениями:

Текстовые файлы: преобразовать строки исходного файла в строки заглавных латинских букв
а) создает текстовый файл из четырех строк строчных латинских букв; б) читает строки из созданного файла и преобразовывает их в строки...

Строки,файлы
В файле есть 3 строки , нужно считать 3-ю строку и записать ее в переменную. подскажите как это сделать?

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

12
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
05.11.2012, 06:46
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
#include <iostream>
#include <string>
using namespace std;
 
int main()
{   
    string str = "So she was considering in her own mind, as well as she could," 
                 "for the hot day made her feel very sleepy and stupid, whether"
                 " the pleasure of making a daisy-chain would be worth the trouble"
                 " of getting up and picking the daisies, when suddenly a White Rabbit"
                 " with pink eyes ran close by her.";
 
    cout << str << endl << endl;
    
    for (int i = 0; i < str.size(); i++)
    {
        while (i < str.size() && str[i] != ' ')
                    i++;
        
        i++;
        while (i < str.size() && str[i] != ' ' && str[i] != ',' && str[i] != '.')
        {
            cout << str[i];
            i++;
        }
        if (i < str.size()) cout << ' '; 
    }
    
    cout << endl;
    system("pause");
    return 0;
}
Цитата Сообщение от Flashik66 Посмотреть сообщение
и записывает их в новый файл в обратном порядке.
То есть, сначала третье, потом второе и первое?
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
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
 
int main()
{   
    ifstream fin("in_file.txt", ios::binary);
    ofstream fout("out_file.txt");
    
    if (!fin.is_open() || !fout.is_open())
        cout << "Error!" << endl;
    else // чтение предложений из файла
    {
        vector <string> v; // вектор для предложений
        char ch;
        string str; // строка для предложения
        
        while (fin.peek() == ' ') // пропускаем пробелы до первого предложения
                    fin.seekg(1, ios::cur);
        
        while (true)
        {
            fin.get(ch);
            if (fin.eof()) break;
            str.push_back(ch);
            if (ch == '.' || ch == '!' || ch == '?') // если конец предложения
            {
                v.push_back(str); // предложение в вектор
                str.clear();
                while (fin.peek() == ' ') // пропускаем пробелы между предложениями
                    fin.seekg(1, ios::cur);
            }
        }
        fin.close();
 
        for (auto i = v.rbegin(); i != v.rend(); i++) // запись предложений в обратном порядке в файл
        {
            fout << *i;
            if (i != (v.rend() - 1)) fout << ' ';
        }
        fout.close();
    }
    
    system("pause");
    return 0;
}
1
18 / 10 / 2
Регистрация: 05.11.2012
Сообщений: 119
05.11.2012, 13:17  [ТС]
Спасибо огромное. Приду домой буду разбираться что к чему!
0
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
05.11.2012, 13:42
а препод вас ругать не будет за использование класса string?
0
18 / 10 / 2
Регистрация: 05.11.2012
Сообщений: 119
05.11.2012, 23:00  [ТС]
не будет)
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
05.11.2012, 23:04
Цитата Сообщение от alsav22 Посмотреть сообщение
vector <string> v; // вектор для предложений
Напрашивается std::stack.
1
18 / 10 / 2
Регистрация: 05.11.2012
Сообщений: 119
07.11.2012, 02:38  [ТС]
К третьему заданию выдает ошибки при компиляции. В чем прикол?

Cpp1.cpp
E:\ó÷åáà\Ëàáû\Ëàáû C++\Ëàá 5\63\Cpp1.cpp(29) : error C2039: 'push_back' : is not a member of 'basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
E:\ó÷åáà\Ëàáû\Ëàáû C++\Ëàá 5\63\Cpp1.cpp(33) : error C2039: 'clear' : is not a member of 'basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
E:\ó÷åáà\Ëàáû\Ëàáû C++\Ëàá 5\63\Cpp1.cpp(40) : error C2440: 'initializing' : cannot convert from 'class std::reverse_iterator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *,class std::basic_string<char,stru
ct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *,int>' to 'int'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
E:\ó÷åáà\Ëàáû\Ëàáû C++\Ëàá 5\63\Cpp1.cpp(40) : error C2677: binary '!=' : no global operator defined which takes type 'class std::reverse_iterator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *,class std::b
asic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<cha
r> > *,int>' (or there is no acceptable conversion)
E:\ó÷åáà\Ëàáû\Ëàáû C++\Ëàá 5\63\Cpp1.cpp(42) : error C2100: illegal indirection
E:\ó÷åáà\Ëàáû\Ëàáû C++\Ëàá 5\63\Cpp1.cpp(43) : error C2677: binary '!=' : no global operator defined which takes type 'class std::reverse_iterator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *,class std::b
asic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<cha
r> > *,int>' (or there is no acceptable conversion)
Error executing cl.exe.

Cpp1.obj - 6 error(s), 0 warning(s)
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
07.11.2012, 09:03
Среда какая?

Добавлено через 11 минут
Так попробуйте. На двух компиляторах без ошибок:
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
50
51
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <iterator>
#include <cstdlib>
using namespace std;
 
int main()
{
    ifstream fin("in_file.txt", ios::binary);
    ofstream fout("out_file.txt");
 
    if (!fin.is_open() || !fout.is_open())
        cout << "Error!" << endl;
    else // чтение предложений из файла
    {
        vector <string> v; // вектор для предложений
        char ch;
        string str; // строка для предложения
 
        while (fin.peek() == ' ') // пропускаем пробелы до первого предложения
                    fin.seekg(1, ios::cur);
 
        while (true)
        {
            fin.get(ch);
            if (fin.eof()) break;
            str.push_back(ch);
            if (ch == '.' || ch == '!' || ch == '?') // если конец предложения
            {
                v.push_back(str); // предложение в вектор
                str.clear();
                while (fin.peek() == ' ') // пропускаем пробелы между предложениями
                    fin.seekg(1, ios::cur);
            }
        }
        fin.close();
 
        vector <string>::reverse_iterator i;
        for ( i = v.rbegin(); i != v.rend(); i++) // запись предложений в обратном порядке в файл
        {
            fout << *i;
            if (i != (v.rend() - 1)) fout << ' ';
        }
        fout.close();
    }
 
    system("pause");
    return 0;
}
Добавлено через 20 минут
Если через стек, то так можно:
Кликните здесь для просмотра всего текста
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
50
51
#include <iostream>
#include <fstream>
#include <string>
#include <stack>
#include <iterator>
using namespace std;
 
int main()
{
    ifstream fin("in_file.txt", ios::binary);
    ofstream fout("out_file.txt");
 
    if (!fin.is_open() || !fout.is_open())
        cout << "Error!" << endl;
    else // чтение предложений из файла
    {
        stack <string> s; // стек для предложений
        char ch;
        string str; // строка для предложения
 
        while (fin.peek() == ' ') // пропускаем пробелы до первого предложения
                    fin.seekg(1, ios::cur);
 
        while (true)
        {
            fin.get(ch);
            if (fin.eof()) break;
            str.push_back(ch);
            if (ch == '.' || ch == '!' || ch == '?') // если конец предложения
            {
                s.push(str); // предложение в стек
                str.clear();
                while (fin.peek() == ' ') // пропускаем пробелы между предложениями
                    fin.seekg(1, ios::cur);
            }
        }
        fin.close();
        
        int j = s.size();
        for ( int i = 0; i < j; i++) // запись предложений в обратном порядке в файл
        {
            fout << s.top();
            s.pop();
            if (i != j - 1) fout << ' ';
        }
        fout.close();
    }
 
    system("pause");
    return 0;
}
0
18 / 10 / 2
Регистрация: 05.11.2012
Сообщений: 119
07.11.2012, 14:41  [ТС]
среда 6,0 уже две ошибки! Вот
error C2039: 'push_back' : is not a member of 'basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
e:\ó÷åáà\ëàáû\ëàáû c++\ëàá 5\63\cpp1.cpp(32) : error C2039: 'clear' : is not a member of 'basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'

Добавлено через 9 минут
Запустил через другой компилятор и вроде собралось. Но программа не работает. При запуске в консоле пишет Error.. Как лечить?
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
07.11.2012, 17:43
Цитата Сообщение от Flashik66 Посмотреть сообщение
среда 6,0
Студия 6 или что?

Цитата Сообщение от Flashik66 Посмотреть сообщение
Запустил через другой компилятор
Какой другой?

Цитата Сообщение от Flashik66 Посмотреть сообщение
При запуске в консоле пишет Error.. Как лечить?
Файла, где предложения должны быть нет, вот и "Error!". Файл в нужное место положите.
0
18 / 10 / 2
Регистрация: 05.11.2012
Сообщений: 119
08.11.2012, 01:47  [ТС]
да-да студия 6. Вы только не злитесь я дуб еще. Файл нужно положить в папку debug?
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
08.11.2012, 02:03

Не по теме:

Никто и не думал злиться.

У меня (студия 2010) в папку с проектом.

Добавлено через 4 минуты
Этот "Error!" в коде сделан для проверки открытия файлов. Если не находится файл для записи (если находится, то данные стираются), то он создаётся, тут ошибки редко бывают. А файл, открываемый для чтения, должен существовать, иначе ошибка открытия.
1
18 / 10 / 2
Регистрация: 05.11.2012
Сообщений: 119
08.11.2012, 02:49  [ТС]
Блин у меня не получается. Если ложить в папку с проектом то ничего не происходит. Если ложить в debug то ничего не происходит но и Error не пишет. Можете прописать путь куда ложить и как назвать файл? Мб я что-то не так делаю..

Добавлено через 7 минут
Ой я дурак. Извини я все понял. Еще раз извини и спасибо огромное за помощь! Спасибо!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.11.2012, 02:49
Помогаю со студенческими работами здесь

Строки и файлы
В заданном тексте после каждого символа Ch удалить все символы до ближайшего символа, не являющегося буквой. моя прога: #include...

Строки и файлы.
Помогите решить следующие задачи и написать к ним блок-схему: 1. В строке заменить все двоеточия (:) точкой с запятой (;). Подсчитать...

файлы и строки
если в файле есть одинаковае строки, дубликаты удалить

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

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод Сайт называется reddit: The Thinkpad X220 Tablet is the best budget school laptop period. Это. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru