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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
beathoven
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 28
#1

Работа с файловыми потоками. Выполнить проверку в готовом коде на верхний регистр - C++

10.06.2014, 19:10. Просмотров 228. Ответов 3
Метки нет (Все метки)

Хотел бы обратиться к аудитории этого сайта с данной проблемой-в программе, которую я написал, не выполняется одно условие-не проверяется заглавная буква(а так как рассматривается литературное произведение, заглавные буквы обязательны). Так вот, я не могу понять, как бы это сделать. Есть идеи копировать строчку, привести её в нижний регистр, проверить и на выходе уже восстановить все регистры.


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

Вот код программы:
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
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    ifstream inp("input.txt");
    ofstream out("output.txt");
    string s, w1, w2;
    cout << "Enter word 1: ";
    cin >> w1;
    cout << "Enter word 2: ";
    cin >> w2;
    w1.insert(0, " "); //пробел перед w1
    int n = w1.size();
    unsigned int pos = 0;
    do
    {
        getline(inp, s);
        s.append(" "); //пробел в начало и конец s
        s.insert(0, " ");
        int slength = s.length();
        while (pos < s.length()) //пока не конец s, ищет w1
        {
            pos = s.find(w1, pos);
            if (pos != string::npos)
            {
                s.insert(pos+n, " "+w2);
                pos++;
            }
        }
        pos = 0;
        s.erase(0, 1); //удаляет пробел перед s
        out << s << endl;
    }
    while(!inp.eof());
    cout << "see results in output file" << endl;
    return 0;
}


Большая просьба-если у вас есть идеи по реализации проверки верхнего регистра, записать это в код. Потому что мозги уже, к сожалению, не варят...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2014, 19:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с файловыми потоками. Выполнить проверку в готовом коде на верхний регистр (C++):

Работа с файловыми потоками - C++
Подскажите. Мне нужно считывать из файла базу данных. Первый элемент каждой строки эта фамилия. Последующие элементы это баллы. У каждой...

Работа с файловыми потоками - C++
Получилось по заданию примерно как то так:Постановка задачи Входные данные: текстовый файл, содержащий значения средних температур за...

Работа с файловыми потоками в С++. - C++
Помогите разобратсья в программе: Дан символьный файл f. Подсчитать число вхождений в файл каждой из букв a, b, c, d, e, f. Результат...

Работа с файловыми потоками. Считать информацию - C++
Здравствуйте! Допустим, мне необходимо считать из файла несколько строк, в каждой из которых по нескольку слов, записанных через пробел....

В верхний регистр - C++
Привет всем. Подскажите как можно сделать чтобы при передаче в функцию строки ( word ) она изменяла первую букву каждого слова на...

Верхний регистр в файле - C++
Доброго времени суток. Кого не слишком затруднит и не отберет много времени, прошу написать код программы ) Написать программу...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
_script_
169 / 137 / 34
Регистрация: 01.05.2012
Сообщений: 414
10.06.2014, 19:38 #2
beathoven, ну на сколько я понял, нужно сравнивать строки без учета регистра. Ну самое простое преобразовать обе к одному регистру и сравнить.
0
beathoven
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 28
10.06.2014, 20:48  [ТС] #3
Цитата Сообщение от _script_ Посмотреть сообщение
beathoven, ну на сколько я понял, нужно сравнивать строки без учета регистра. Ну самое простое преобразовать обе к одному регистру и сравнить.
Цитата Сообщение от _script_ Посмотреть сообщение
ну на сколько я понял, нужно сравнивать строки без учета регистра. Ну самое простое преобразовать обе к одному регистру и сравнить.
Вот смотри, что получается:
Мы, допустим, вводим фразу "Abs efgl abs sefl abs". Хотим, чтобы после "abs" у нас вставилось "asdf". Но на выходе у нас получается "Abs efgl abs asdf sefl abs asdf". Вот нужно что-то сделать с "Abs", а что, я ума не приложу, ей Богу.
0
_script_
169 / 137 / 34
Регистрация: 01.05.2012
Сообщений: 414
10.06.2014, 21:09 #4
beathoven, tolower преобразовывает в нижний регистр
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2014, 21:09
Привет! Вот еще темы с ответами:

Верхний регистр символа - C++
есть ли какая-нибудь команда, которая переводит только один выбранный символ в верхний регистр. Например есть строка: char s =...

Преобразование в верхний регистр - C++
Народ нужна ваша помощь. Написал прогу чтоб из текстовика помещал строки в контейнер Vector, а оттуда в выходной файл. Но еще нужно...

Верхний и нижний регистр - C++
Напишите программу, которая читает клавиатурный ввод до символа @ и повторяет его, за исключением десятичных цифр, преобразуя каждую...

Переведите символ в верхний регистр - C++
Переведите символ в верхний регистр. Входные данные Вводится единственый символ. Выходные данные Если введеный символ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.06.2014, 21:09
Ответ Создать тему
Опции темы

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