Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2014, 19:30   #1
alina1995
Пользователь
 
Регистрация: 13.11.2014
Сообщений: 15
По умолчанию Cнова Строки...

Снова вроде детская задача,но не получается..помогите пожалуйста..
Задача: Удалить последнее слово и удвоить предпоследнее.
Заранее большое спасибо.
alina1995 вне форума Ответить с цитированием
Старый 18.11.2014, 21:59   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Цитата:
Сообщение от alina1995 Посмотреть сообщение
удвоить предпоследнее
Что это значит? Допустим, я скармливаю программе предложение:

Цитата:
Hello my computer!
Что у неё будет на выходе?

Цитата:
Hello mymy
Это?

Покажите, как вы сделали ввод данных
8Observer8 вне форума Ответить с цитированием
Старый 19.11.2014, 14:41   #3
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

Криво, быстро, но идея такая.

Код:
#include <stdio.h>
#include <list>
#include <string>
#include <string.h>

class str_tokenizer
{
    typedef std::list<std::string> strlist;
public:
    str_tokenizer(char* str, const char* fmt)
    {
        for(char* p = strtok(str, fmt); p && p[0]; p = strtok(NULL, fmt))
           m_strl.push_back(std::string(p));
    }
    ~str_tokenizer()
    {}

    void print()
    {
        for(strlist::const_iterator it = m_strl.begin(); it != (--m_strl.end()); ++it)
        {
            if(it == (--(--m_strl.end())))
            {
                printf("%s", it->c_str());
            }
            printf("%s ", it->c_str());
        }
    }
private:
    strlist m_strl;
};

int main(void)
{
    char str[1024] = {0,};
    gets(str);
    str_tokenizer st((char*)str, " ,:.!");
    st.print();
    return 0;
}
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Старый 19.11.2014, 16:20   #4
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Код:
string str = "hello my computer";
vector<string> words;
stringstream sstr;

sstr << str;
while (false == sstr.eof()) {
  string tmp;
  sstr >> tmp;
  words.push_back(tmp);
}

words.pop_back(); // удалил последнее
words.push_back(words.back()); // удвоил предпоследнее

str.clear();
for (string word : words) {
  str += word + " ";
}
rrrFer вне форума Ответить с цитированием
Старый 19.11.2014, 18:04   #5
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Код:
string str = "hello my computer";
vector<string> words;
stringstream sstr;

sstr << str;
while (false == sstr.eof()) {
  string tmp;
  sstr >> tmp;
  words.push_back(tmp);
}
Код:
string str = "hello my computer";
vector<string> words;
stringstream sstr(str);

string tmp;
while (sstr >> tmp) {
    words.push_back(tmp);
}

Последний раз редактировалось 8Observer8; 19.11.2014 в 18:10.
8Observer8 вне форума Ответить с цитированием
Старый 19.11.2014, 19:32   #6
alina1995
Пользователь
 
Регистрация: 13.11.2014
Сообщений: 15
По умолчанию

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
Что это значит? Допустим, я скармливаю программе предложение:



Что у неё будет на выходе?



Это?

Покажите, как вы сделали ввод данных
Ну например предложение: "Ехала машина по дороге" при выводе должно выводить "Ехала машина по по" тоесть удаляем последнее и удваиваем предпоследнее..
alina1995 вне форума Ответить с цитированием
Старый 19.11.2014, 20:46   #7
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Цитата:
Сообщение от alina1995 Посмотреть сообщение
Ну например предложение: "Ехала машина по дороге" при выводе должно выводить "Ехала машина по по" тоесть удаляем последнее и удваиваем предпоследнее..
Так вам на русском нужно? Так бы сразу и сказали. Тогда используйте только Visual Studio Express Edition (2013, как минимум), так как с другими средами с русским не так просто, как с VS. Переделал немного решение от rrrFer: http://rextester.com/APGE81132 Почему-то вывода сайт не дал

Только я вывод сделал не через "range-based for", как выше, так как у меня Visual Studio C++ 2010 Express Edition:

Код:
#include <iostream>     // std::wcout
#include <vector>       // std::vector
#include <sstream>      // std::wstringstream

int main( )
{
    std::locale l( "Russian" );
    std::locale::global( l );

    std::wstring str = L"Ехала машина по дороге";
    std::vector<std::wstring> words;
    std::wstringstream sstr( str );

    std::wstring tmp;
    while ( sstr >> tmp ) {
      words.push_back( tmp );
    }

    words.pop_back(); // удалил последнее
    words.push_back( words.back() ); // удвоил предпоследнее

    std::string result;
    for ( auto it = words.cbegin(); it != words.cend(); ++it ) {
      std::wcout << *it << " ";
    }
    std::cout << "\n\n";

    return 0;
}

Последний раз редактировалось 8Observer8; 19.11.2014 в 20:58.
8Observer8 вне форума Ответить с цитированием
Старый 20.11.2014, 15:53   #8
alina1995
Пользователь
 
Регистрация: 13.11.2014
Сообщений: 15
По умолчанию

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
Так вам на русском нужно? Так бы сразу и сказали. Тогда используйте только Visual Studio Express Edition (2013, как минимум), так как с другими средами с русским не так просто, как с VS. Переделал немного решение от rrrFer: http://rextester.com/APGE81132 Почему-то вывода сайт не дал

Только я вывод сделал не через "range-based for", как выше, так как у меня Visual Studio C++ 2010 Express Edition:

Код:
#include <iostream>     // std::wcout
#include <vector>       // std::vector
#include <sstream>      // std::wstringstream

int main( )
{
    std::locale l( "Russian" );
    std::locale::global( l );

    std::wstring str = L"Ехала машина по дороге";
    std::vector<std::wstring> words;
    std::wstringstream sstr( str );

    std::wstring tmp;
    while ( sstr >> tmp ) {
      words.push_back( tmp );
    }

    words.pop_back(); // удалил последнее
    words.push_back( words.back() ); // удвоил предпоследнее

    std::string result;
    for ( auto it = words.cbegin(); it != words.cend(); ++it ) {
      std::wcout << *it << " ";
    }
    std::cout << "\n\n";

    return 0;
}
Я Вас поняла,мне не именно на русском языке..просто сделать ввод строки любой,на любом языке и просто чтобы она удаляла и удваивала..Я программирую в Девке..ну не суть,спасибо
alina1995 вне форума Ответить с цитированием
Старый 20.11.2014, 16:15   #9
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Цитата:
Я программирую в Девке
а девка не против?
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 20.11.2014, 17:11   #10
alina1995
Пользователь
 
Регистрация: 13.11.2014
Сообщений: 15
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
а девка не против?
Как раз таки Против
alina1995 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ Упорядочить строки матрицы D (m. n) Лексикографически по неубыванию первых k элементов строки Анатолий171 Помощь студентам 123 04.07.2014 18:46
Задача на строки. Даны две строки. Определить можно ли из символов первой строки получить вторую строку.( написать подпрограммой и ANTON1994 Паскаль, Turbo Pascal, PascalABC.NET 5 09.02.2013 14:07
Программа на языке "Ассемблер" - ввод строки, анализ длины строки, добавление точки в конец строки Алексей_2012 Помощь студентам 1 05.04.2012 11:26
Сделать в гриде строки выше, чтобы не растягивать строки до бесконечности kris__tina БД в Delphi 1 09.06.2011 15:31
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10