#include <iostream>
#include <sstream>
#include <string>
int main()
{
std::string initialString; // исходная строка
// вводим строку
std::cout << "Enter a string: ";
std::getline( std::cin, initialString );
std::cout << "Initial string: " << initialString << std::endl;
std::stringstream ss( initialString ); // строковый поток
std::string firstWord;
ss >> firstWord;
if( !firstWord.empty() )
{
char firstSymbol = firstWord.front();
std::string newString = firstWord + firstSymbol;
// извлекаем из строкового потока слова
std::string word; // отдельное слово
while( ss >> word )
{
// и добавляем их, с первым символом и пробелом, к новой строке
newString += " " + word + firstSymbol;
}
std::cout << "New string: " << newString << std::endl;
}
else
{
std::cout << "Initial string does not contain any words" << std::endl;
}
return 0;
}
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
//Класс - элемент списка
struct Node{
public:
char Data; //Данные
Node* Next; //Усазатель на следующий элемент
Node(char vdata); //Конструктор элемента
Node(char vdata, Node* vnode); //Конструктор элемента
};
Node::Node(char vdata){
Next = NULL;
Data = vdata;
}
Node::Node(char vdata, Node* vnode){
Next = vnode;
Data = vdata;
}
//Класс - односвязный список
class LinkedList {
public:
Node* Last; //Указатель на последний элемент
Node* Head; //Указатель на первый элемент
void Add(char d); //Функция добавления значения с созданием нового элемента в конец списка
void Delete(); //Функция удаления первого элемента
void Print(); //Функция печати
LinkedList(); //Конструктор списка
};
LinkedList::LinkedList(){
Head = NULL;
Last = NULL;
}
void LinkedList::Add(char d)
{
Node* newNode=new Node(d);
if (Last == NULL) {
Last = newNode;
Head = newNode;
}else {
Last->Next=newNode;
Last=newNode;
};
}
void LinkedList::Delete()
{
Node *p;
p=Head->Next;
delete Head;
Head=p;
}
void LinkedList::Print()
{
Node *p=Head;
while(p!=NULL){
cout<<p->Data;
p=p->Next;
};
}
int main()
{
LinkedList elements;
// char letter;
Node* firstletter;
//Считываем строку с клавиатуры
cout << "Enter a string: ";
do {
// letter = cin.get(); //Считываем 1 символ
elements.Add(cin.get()); //Считываем 1 символ и добавляем считаный символ в конец списка
} while (elements.Last->Data != '\n'); //Если считаный символ равен '\n' - возврат каретки (enter), завершаем чтение строки
//Ищем элемент списка, содержащий первый не пробельный символ
firstletter = elements.Head; //Присваиваем указателю значение 1-го элемента списка
while((firstletter!=NULL)&&(firstletter->Data==' ')){ //Пока указатель не NULL и элемент содержит пробел
firstletter=firstletter->Next; //Берем следующий элемент списка
};
//Изменение строки
if (firstletter!=NULL){ //Если элемент списка, содержащий первый не пробельный символ найден ТО
Node* p = elements.Head; //Присваиваем указателю значение 1-го элемента списка
while (p!=NULL){ //Пока указатель не NULL
if ((p->Data!=' ')&&(p->Next!=NULL)&&((p->Next->Data==' ')||(p->Next->Data=='\n'))) { //Если элемент не содержит пробел И есть следующий элемент И следующий элемент содержит пробел ТО
p->Next = new Node(firstletter->Data, p->Next); //Соэдаем новый элемент, содержащий значение первого не пробельного символа и вставляем его после текущего
p = p->Next; //Берем следующий элемент списка (только что вставленный)
};
p = p->Next; //Берем следующий элемент списка
};
};
elements.Print(); //Печать списка
return 0;
}
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.