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

Перенести часть строки в конец предложения перед точкой

01.05.2018, 16:48. Показов 1611. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Требуется в данном тексте:

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

Перенести вот эту часть:

(каждая с определенной длиной волны)

в конец предложения перед точкой, чтобы на выходе текст выглядел вот так:

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

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

Пока что начало кода выглядит вот так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <fstream>
#include <cstdio>
int main()
{
    setlocale(LC_ALL, "Russian");
    using namespace std;
    ifstream inFile;
    ofstream outFile;
    char StIn[], StOut[]; // входная и выходная строки
    char First, Last;
 
    inFile.open(In.txt);
        while (!inFile.eof())
            inFile >> StIn[];
    inFile.close();
Вообще идеи есть, но какие-то они крайне не рациональные. Поэтому очень прошу у вас помощи и буду крайне признательна!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.05.2018, 16:48
Ответы с готовыми решениями:

Строки. Если в конце строки точка отсутствует, то найти слово, заканчивающееся точкой и перенести его в конец строки.
Дана строка, состоящая из слов и содержащая одну точку в конце одного из слов. Если в конце строки точка отсутствует, то найти слово,...

Перенести все цифры предложения в конец строки
Я сделал такой код, но мне сказали что не правильно, потому что я например пишу asd123asd123asd и получается asdasd123123123 и я теряю...

Образуется пробел перед точкой в конце предложения
Python (3.7) Windows 7 a = int(input()) b = a - 1 c = a + 1 print(&quot;The next number for the number&quot;, b, &quot;is&quot;, c, '.') print(&quot;The...

9
 Аватар для ПерС
587 / 490 / 371
Регистрация: 05.11.2013
Сообщений: 1,271
Записей в блоге: 6
01.05.2018, 18:53
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
//Visual Studio 2015
#include <iostream>
#include <string>
using namespace std;
 
int main() {
 setlocale (LC_ALL,".1251");
 string str("Если разложить поле на монохроматические составляющие (каждая \
с определенной длиной волны), то вся энергия некоторым образом распределится между ними.");
 
 int pos1 = str.find_first_of('(');
 int  pos2 = str.find_last_of(')');
 if (pos1 == string::npos || pos2 == string::npos || pos1 > pos2) {
  cout << "Неверные данные!";
 }
 else {
  pos1--; 
  pos2++;
  string brackets = str.substr(pos1, pos2 - pos1 + 1);
  str.erase(str.begin() + pos1, str.begin() + pos2);
  if (str[str.size() - 1] != '.') {
    cout << "Нет точки в конце!";
  }
  else {
   str = str.substr(0,str.size()-1) + brackets.substr(0,brackets.size()-1) + '.';
   cout << str;
  }
 }
 
 cin.get(); return 0;
}
0
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
01.05.2018, 20:14
Maria Ignatova, ,и что ? Вы хоть что то поняли из предложенного вам решения???

Добавлено через 33 минуты
ПерС, ,Вам спасибо за просвещение в области работы с переменной string str,а то можно подумать глядя на уроки по C++ после C#, что в C++ существует только
C++
1
char string [] = " afc ";
0
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
01.05.2018, 22:28
ПерС, Вы наверно не зря разместили в коде версию вашей VS 2015.У меня 2010 и вот что выдало :
Миниатюры
Перенести часть строки в конец предложения перед точкой   Перенести часть строки в конец предложения перед точкой  
0
0 / 0 / 1
Регистрация: 21.03.2018
Сообщений: 7
01.05.2018, 22:46  [ТС]
Суть в том, что строку надо именно из файла считывать.

Добавлено через 1 минуту
Цитата Сообщение от ПерС Посмотреть сообщение
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
//Visual Studio 2015
#include <iostream>
#include <string>
using namespace std;
 
int main() {
 setlocale (LC_ALL,".1251");
 string str("Если разложить поле на монохроматические составляющие (каждая \
с определенной длиной волны), то вся энергия некоторым образом распределится между ними.");
 
 int pos1 = str.find_first_of('(');
 int  pos2 = str.find_last_of(')');
 if (pos1 == string::npos || pos2 == string::npos || pos1 > pos2) {
  cout << "Неверные данные!";
 }
 else {
  pos1--; 
  pos2++;
  string brackets = str.substr(pos1, pos2 - pos1 + 1);
  str.erase(str.begin() + pos1, str.begin() + pos2);
  if (str[str.size() - 1] != '.') {
    cout << "Нет точки в конце!";
  }
  else {
   str = str.substr(0,str.size()-1) + brackets.substr(0,brackets.size()-1) + '.';
   cout << str;
  }
 }
 
 cin.get(); return 0;
}
Суть в том, что строку надо именно из файла считывать
0
848 / 651 / 323
Регистрация: 24.02.2017
Сообщений: 2,297
01.05.2018, 22:48
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
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
 
string s("Если разложить поле на монохроматические составляющие (каждая \
с определенной длиной волны), то вся энергия некоторым образом распределится между ними."),t=" ";
size_t i=0, a,b;
 
 i=s.find('(');
 a=i;
 b=s.find(')');
 while(a<=b)
    t+=s[a++];
 s.erase(i,t.size());
 s.insert(s.length()-1,t);
 
 cout<<s<<"\n";
 system("PAUSE");
 return 0;
}
0
 Аватар для ПерС
587 / 490 / 371
Регистрация: 05.11.2013
Сообщений: 1,271
Записей в блоге: 6
02.05.2018, 14:28
C++
1
while(a<=b)
повар1, если ни одной скобки нет, видимо, string::npos == string::npos ?

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

Добавлено через 2 минуты
Веселый, 2010 устарело, по меньшей мере, с 2011 года.
А может, нет
C++
1
#include <string>
в Вашем коде

Code
1
в C++ существует только char string [] = " afc ";
Это в Си
0
0 / 0 / 1
Регистрация: 21.03.2018
Сообщений: 7
02.05.2018, 16:40  [ТС]
Цитата Сообщение от ПерС Посмотреть сообщение
C++
1
while(a<=b)
повар1, если ни одной скобки нет, видимо, string::npos == string::npos ?

Добавлено через 2 минуты


Maria Ignatova, На основе процитированного, думал, что прочитать строку из файла вы в состоянии

Добавлено через 2 минуты
Веселый, 2010 устарело, по меньшей мере, с 2011 года.
А может, нет
C++
1
#include <string>
в Вашем коде

Code
1
в C++ существует только char string [] = " afc ";
Это в Си
Да, написала код.
Получилось как-то так:
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
#include <iostream>
#include <fstream>
#include <cstdio>
int main()
{
    setlocale(LC_ALL, "Russian");
    using namespace std;
    ifstream inFile;
    ofstream outFile;
    char StIn[200], StOut[200]; // входная и выходная строки
    int Number, N1, N2, N3;
 
    inFile.open("In.txt");
    while (!inFile.eof())
    {
        inFile >> StIn[200];
    }
    inFile.close();
 
    Number = strlen(StIn);
 
    char *begin = strrchr(StIn, '(');
    char *end = strrchr(StIn, ')');
 
    N1 = (begin - StIn + 1);
    N2 = (Number + (end - StIn) - 1);
    N3 = (end - begin - 1);
 
    strncpy_s(StOut, StIn, N1);
    strncpy_s(StOut, end, N2);
    strncpy_s(StOut, begin, N3);
 
    outFile.open("Out.txt");
    outFile << StOut;
    outFile.close();
}
Однако при компиляции выдает вот такую ошибку. Может быть, знаете, в чем дело?
Миниатюры
Перенести часть строки в конец предложения перед точкой  
0
 Аватар для ПерС
587 / 490 / 371
Регистрация: 05.11.2013
Сообщений: 1,271
Записей в блоге: 6
03.05.2018, 04:58
Не при комплиляции, а при выполнении.
C++
1
inFile >> StIn;
в строке 16. Тогда в StIn по выходе из цикла будет последняя строка файла (включая пустую, если там есть такая).

Но тебе, думаю, всё равно, ты же ничего не проверяешь - удалось ли открыть файл, найти скобки и т.п.
0
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
05.05.2018, 15:50
ПерС,я подключил библотеку
C++
1
#include <string>
. Всё работает без ошибок.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.05.2018, 15:50
Помогаю со студенческими работами здесь

Найти конец предложения и перенести следующее предложение на новую строку
Помогите пожалуйста с заданием. Нужно чтобы программа анализировала текст и переносила каждое предложение на новую строку. Проблемы с...

Перед каждой точкой в строке вставлять в скобках сумму ascii кодов всех букв предложения
Пример qwerty. Не работает программа, вот мой код: int ascii() { string st2=&quot;&quot;; string st=&quot;Qwerty. Qwe.&quot;; ...

В четных строках перенести первое слово строки в конец строки
Дан какой либо текст. Нужно во всех четных строках перенести первое слово строки в конец строки. Строки, содержащие только одно слово, не...

Как регуляркой перенести конец текста строки в начало строки?
Не совсем по теме, не знал куда вопрос отнести. Есть огромное кол-во файлов с названием типа: название (??????).pdf Необходимо...

Как в чётных строках файла перенести первое слово строки в конец строки?
Народ кто сможет? Задания на контрольную работу по дисциплине «Операционные системы UNIX» Решите поставленные задачи с помощью...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка 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 и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru