Другие языки программирования и технологии

Буду благодарен, если напишите решение на c++

Напишите программу, которая принимает строку, содержа-
щую фамилию, имя и отчество человека (каждая пара слов
разделена одним пробелом). Нужно построить новую строку,
в которой записаны инициалы (первые буквы имени и отче-
ства с точками после них) и через пробел – фамилия.
По теме C++ я не помощник, но задание про инициалы не так давно делал в Ruby
# encoding: utf-8

dot = '. '
puts 'name'
name = gets.to_s
puts 'subname'
subname = gets.to_s
one = name[0...1].upcase!.concat(dot)
two = subname[0...1].upcase!.concat(dot)
print(one)
print(two)
Алексей Лаврентьев
Алексей Лаврентьев
70 473
Лучший ответ
#include <Windows.h>
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
using namespace std;
class Surname {
public:
static string initials_front(const string& surnsme) {
auto box = _split_and_modify(surnsme);
string result;
if (box.size() == 1) result = box.at(0);
if (box.size() == 2) result = box.at(1) + " "s + box.at(0);
if (box.size() == 3) result = box.at(1) + " "s + box.at(2) + " "s + box.at(0);
return result;
}
static string initials_end(const string& surnsme) {
auto box = _split_and_modify(surnsme);
string result;
if (box.size() == 1) result = box.at(0);
if (box.size() == 2) result = box.at(0) + " "s + box.at(1);
if (box.size() == 3) result = box.at(0) + " "s + box.at(1) + " "s + box.at(2);
return result;
}
private:
static vector<string> _split_and_modify(const string& surnsme) {
vector<string> box;
istringstream iss(surnsme);
string token;
while (iss >> token) box.emplace_back(token);
if (box.size() > 1) box.at(1) = box.at(1).front() + "."s;
if (box.size() > 2) box.at(2) = box.at(1).front() + "."s;
return box;
}
};
int main() {
SetConsoleTitleW(L"Конвертер");
system("chcp 1251 > nul");
cout << "Фамилия Имя Отчкство: ";
string name;
getline(cin, name);
auto nf = Surname::initials_front(name);
auto ne = Surname::initials_end(name);
cout << nf << '\n' << ne << '\n';
system("pause");
}
*** _ Elnur Muxt@rov _***
*** _ Elnur Muxt@rov _***
84 509
*** _ Elnur Muxt@rov _*** Отчкство ))
Примерно так

stringstream temp(inputstr);
string F,I,O;
temp>>F>>I>>O;
string outstr=I[0]+"."+O[0]+". "+F;

https://ideone.com/rjYRRO
Игорь Кротиков
Игорь Кротиков
84 645
напишу, если поможешь мне отфотошопить кое что.... плиииз
Андрей Козарук
Андрей Козарук
10 755