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

Строка S содержит фамилию, имя, отчество. Необходимо преобразовать ее в строку, содержащую фамилию и инициалы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.95
DemonZverskii
0 / 0 / 0
Регистрация: 30.05.2011
Сообщений: 74
07.06.2012, 00:55     Строка S содержит фамилию, имя, отчество. Необходимо преобразовать ее в строку, содержащую фамилию и инициалы #1
Строка S содержит фамилию, имя, отчество. Необходимо преобразовать ее в строку, содержащую фамилию и инициалы.
_______
Как это задание сделать в C# я более или менее понимаю, но как сделать с C++ увы и ах(
Вобщем то,Насколько понимаю я , надо идти по строке, отметив после первого пробела первое слово, и сохранив его. от следующих двух слов надо взять только первые буквы.


Но загвоздка в том что я совсем не знаю как это сделать на C++( сроки поджимают(

Буду очень благодарен за помощь!

P.S. буду онлайн всю ночь пишите....
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2012, 00:55     Строка S содержит фамилию, имя, отчество. Необходимо преобразовать ее в строку, содержащую фамилию и инициалы
Посмотрите здесь:

C++ Дана строка: Ваши фамилия, имя и отчество записаны через один пробел. Записать одну фамилию в виде И...в.
Ввести фамилию, имя и отчество как одно данное типа строка. Заменить на инициалы C++
C++ Ввести имя фамилию и отчество как одно данное типа строка. Определить длину строки и количество гласных в нем. Удалить все буквы "а" и "о" в фамилии.
Ввести фамилию, имя и отчество как одно текстовое данное. Определить длину данного и количество букв «а» в нем C++
Дана строка вида «Фамилия Имя Отчество». Получить строку вида Имя Отчество C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
07.06.2012, 01:56     Строка S содержит фамилию, имя, отчество. Необходимо преобразовать ее в строку, содержащую фамилию и инициалы #2
Быдлокод, но работает
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
#include <iostream>
#include <string>
#include <sstream>
 
bool famio(std::string & s) {
    std::istringstream ist(s);
    std::string f, i, o;
    if ( ( ist >> f ) && ( ist >> i ) && ( ist >> o ) ) {
        i[1] = o[1] = '.';
        i.resize(2);
        o.resize(2);
        std::ostringstream ost;
        ost << f << ' ' << i << ' ' << o;
        s = ost.str();
        return true;
    }
    else
        return false;
}
 
int main() {
    std::string s;
    
    while ( std::cout << "FIO: " && std::getline(std::cin, s) && ! s.empty() ) {
        if ( famio(s) )
            std::cout << "RET: " << s << std::endl;
        else
            std::cerr << "Wrong string format!" << std::endl;
    }
    
    return 0;
}
DemonZverskii
0 / 0 / 0
Регистрация: 30.05.2011
Сообщений: 74
07.06.2012, 05:42  [ТС]     Строка S содержит фамилию, имя, отчество. Необходимо преобразовать ее в строку, содержащую фамилию и инициалы #3
Спасибо! пошел разбираться!

Добавлено через 55 минут
Если не сложно накидайте пожалуйста пару коментов, а то я понимаю не все и то достаточно приблизительно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
07.06.2012, 11:36     Строка S содержит фамилию, имя, отчество. Необходимо преобразовать ее в строку, содержащую фамилию и инициалы #4
Цитата Сообщение от DemonZverskii Посмотреть сообщение
я понимаю не все и то достаточно приблизительно
Как-нибудь поточнее напишите, чего не понимаете. В двух словах функция получает строку по ссылке пытается вынуть из неё 3 слова, первое оставляет, как есть, в двух других вставляет точку после первой буквы и обрезает их до 2 символов каждое. После этого сливает все три слова через пробел в строковый поток, из него обратно в переданную строку и возвращает true. Если получить три слова из строки не удалось - вернёт false.
DemonZverskii
0 / 0 / 0
Регистрация: 30.05.2011
Сообщений: 74
08.06.2012, 22:09  [ТС]     Строка S содержит фамилию, имя, отчество. Необходимо преобразовать ее в строку, содержащую фамилию и инициалы #5
Цитата Сообщение от easybudda Посмотреть сообщение
Как-нибудь поточнее напишите, чего не понимаете. В двух словах функция получает строку по ссылке пытается вынуть из неё 3 слова, первое оставляет, как есть, в двух других вставляет точку после первой буквы и обрезает их до 2 символов каждое. После этого сливает все три слова через пробел в строковый поток, из него обратно в переданную строку и возвращает true. Если получить три слова из строки не удалось - вернёт false.
хм да просто я очень слабо знаю C++ а на изучение нет особо времени( просьба изложить то же самое но в коментариях к коду, поэтапно( ну можно и подробней

Добавлено через 6 минут
ведь проблемма в том что я не знаю что делает та или иная строка
Yandex
Объявления
08.06.2012, 22:09     Строка S содержит фамилию, имя, отчество. Необходимо преобразовать ее в строку, содержащую фамилию и инициалы
Ответ Создать тему
Опции темы

Текущее время: 04:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru