Задача стоит такая:
"Последнее слово строки поставить после первого."
Суть в том чтобы написать через string char[4343434343] и тд, а у меня получилось только через вектора, по другому вообще не могу допетрить, помогите пожалуйста. Желательно в простом виде, а то я не очень разбираюсь ( только начал изучать )
C/C++
Строки с++, не получается написать никак код
#include <iostream>
#include <string>
using namespace std;
// символ, не относящийся к слову
bool not_word_char(const int c)
{
return c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '.'
|| c == ',' || c == ';' || c == ':' || c == '!' || c == '\?'
|| c == '(' || c == ')';
}
int main()
{
string str,word,tmp;
int last,x;
getline(cin,str);
x = str.length() - 1;
while(not_word_char(str[x]) && x >= 0) x--; // ищем конец последнего слова
while(!not_word_char(str[x]) && x >= 0) x--; // ищем символ до последнего слова
last = x+1; // указатель на начало последнего слова
word += str[last-1]; // копируем символ до этого слова
for(int y = last; y < str.length(); y++)
{
//cout << __LINE__ << ' ' << y << " \"" << str[y] << '\"' << endl;
if(not_word_char(str[y])) break;
word += str[y]; // записываем последнее слово
}
//cout << __LINE__ << ' ' << word << ' ' << last << endl;
x = 0;
while(not_word_char(str[x]) && x < last)
{ // ищем начало первого слова
tmp += str[x];
x++;
}
while(!not_word_char(str[x]) && x < last)
{ // копируем первое слово
tmp += str[x];
x++;
}
tmp += word; // копируем последнее слово
while(x < last - 1)
{ // копируем то, что до последнего слова
tmp += str[x];
x++;
}
x += word.length(); // пропускаем последнее слово
while(x < str.length())
{
tmp += str[x]; // копируем то, что после последнего слова
x++;
}
str = tmp;
cout << str << endl;
return 0;
}
#include <string>
using namespace std;
// символ, не относящийся к слову
bool not_word_char(const int c)
{
return c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '.'
|| c == ',' || c == ';' || c == ':' || c == '!' || c == '\?'
|| c == '(' || c == ')';
}
int main()
{
string str,word,tmp;
int last,x;
getline(cin,str);
x = str.length() - 1;
while(not_word_char(str[x]) && x >= 0) x--; // ищем конец последнего слова
while(!not_word_char(str[x]) && x >= 0) x--; // ищем символ до последнего слова
last = x+1; // указатель на начало последнего слова
word += str[last-1]; // копируем символ до этого слова
for(int y = last; y < str.length(); y++)
{
//cout << __LINE__ << ' ' << y << " \"" << str[y] << '\"' << endl;
if(not_word_char(str[y])) break;
word += str[y]; // записываем последнее слово
}
//cout << __LINE__ << ' ' << word << ' ' << last << endl;
x = 0;
while(not_word_char(str[x]) && x < last)
{ // ищем начало первого слова
tmp += str[x];
x++;
}
while(!not_word_char(str[x]) && x < last)
{ // копируем первое слово
tmp += str[x];
x++;
}
tmp += word; // копируем последнее слово
while(x < last - 1)
{ // копируем то, что до последнего слова
tmp += str[x];
x++;
}
x += word.length(); // пропускаем последнее слово
while(x < str.length())
{
tmp += str[x]; // копируем то, что после последнего слова
x++;
}
str = tmp;
cout << str << endl;
return 0;
}
Похожие вопросы
- Напишите пожалуйста код на 5 вариант очень простой я на 1 курсе вуза и нужен простой код.
- Написать фрагмент кода, где формируется двумерный массив, элементы которого могут быть тру и фолс
- Задачу написать на с++ , она не сложная но почему то не получается напишите задачу с помощью цикла
- Напишите пожалуйста код на C++ или Python
- Программирование на С++. Напишите мой код с использованием подпрограммы
- Написать фрагмент кода на си
- Помогите написать код c++ со строками
- Помогите написать код на Си, по теме "строки".
- Помогите написать код! С++ Строки (без использования классов)
- Что делает flush код ниже? Он никак не влияет на перенос курсора на новую строку, тоже самое можно сделать с endl.
bool not_word_char(const char c)
но, в принципе, и так работает программа.
Если что, пишите.