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

Поменять местами первое и последнее слово, найти слова-палиндромы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Непонятный глюк при дебаге http://www.cyberforum.ru/cpp-beginners/thread1110609.html
Курсор стоял на 200-й строке, я добавил Buffer в Watch и сразу вылезло окно call stack.
C++ Вычислить сумму элементов массива, расположенных между его максимумом и минимумом Привет всем, помогите составить программку для этой задачи. Вычислить сумму элементов массива, расположенных между его максимумом и минимумом. Использовать функцию для каждой строки матрицы О (3, 8) http://www.cyberforum.ru/cpp-beginners/thread1110591.html
Работа со структурами. Вывести работников, замещающих одинаковые должности C++
Суть задания в том что бы ввести через структуру 10 работников, их имена должности и год устройства, а потом вывести имена тех у кого одинаковая должность. с 1-м я справился, а вот как 2-е сделать не понял, набросок есть но в чем то ошибаюсь, и не знаю как не потерять 1-й элемент или написать его неоднократно когда начинаю перебирать масив(на паскале через boolean это оформлялось, а как в С++ не...
C++ Найти минимальную сумму у.е., заплатив которую игрок может попасть в правый нижний угол
Вот такая задачка: В прямоугольной таблице NxM (в каждой клетке которой записано некоторое число) в начале игрок находится в левой верхней клетке. За один ход ему разрешается перемещаться в соседнюю клетку либо вправо, либо вниз (влево и вверх перемещаться запрещено). При проходе через клетку с игрока берут столько у.е., какое число записано в этой клетке (деньги берут также за первую и...
C++ Как узнать, сколько на дисках свободного места http://www.cyberforum.ru/cpp-beginners/thread1110566.html
Пожалуйста форумчане помогите с кодом как узнать сколько на дисках свободного места, надо чтоб в консоле под windows вывело на экран программа. приведите пожалуйста код.
C++ AT-команды 3G модему Доброго времени суток товарищи. Требуется по ТЗ считать смс с 3г модема. Гугл ничего дельного не подсказал, м.б. тут кто сталкивался? Интересуют наработки\советы\в какую сторону копать. Спасибо! подробнее

Показать сообщение отдельно
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
04.03.2014, 15:19     Поменять местами первое и последнее слово, найти слова-палиндромы
sentence.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef SENTENCE_H_
#define SENTENCE_H_
 
#include <string>
#include <vector>
#include <ostream>
 
class Sentence {
private:
    std::vector<std::string> words;
public:
    Sentence(const std::string & str);
    void swapHeadTail();
    bool isPalindrome(const std::string & s) const;
    std::vector<std::string> innerPalindromes() const;
    friend std::ostream & operator << (std::ostream & ost, const Sentence & sent);
};
 
#endif /* SENTENCE_H_ */

sentence.cpp
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
33
34
35
#include "sentence.h"
#include <algorithm>
#include <iterator>
#include <functional>
#include <sstream>
 
Sentence::Sentence(const std::string & str) {
    std::istringstream ist(str);
    std::copy(std::istream_iterator<std::string>(ist), std::istream_iterator<std::string>(), std::back_inserter(words));
}
 
void Sentence::swapHeadTail() {
    std::swap(*words.begin(), *words.rbegin());
}
 
bool Sentence::isPalindrome(const std::string & str) const {
    std::string rst = str;
    std::reverse(rst.begin(), rst.end());
 
    return ( rst == str);
}
 
std::vector<std::string> Sentence::innerPalindromes() const {
    std::vector<std::string> ip;
    for ( std::vector<std::string>::const_iterator i = words.begin(); i != words.end(); ++i )
        if ( isPalindrome(*i) )
            ip.push_back(*i);
 
    return ip;
}
 
std::ostream & operator << (std::ostream & ost, const Sentence & sent) {
    std::copy(sent.words.begin(), sent.words.end(), std::ostream_iterator<std::string>(ost, " "));
    return ost;
}

testsentence.cpp
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
#include "sentence.h"
#include <iostream>
#include <iterator>
 
int main() {
    Sentence sent("any 12321 many 4554 money more");
 
    std::cout << "Sentence: " << sent << std::endl;
 
    std::vector<std::string> palindromes = sent.innerPalindromes();
    if ( ! palindromes.empty() ) {
        std::cout << "Inner palindromes: ";
        std::copy(palindromes.begin(), palindromes.end(), std::ostream_iterator<std::string>(std::cout, " "));
        std::cout << std::endl;
    }
    else
        std::cout << "No inner palindromes found!" << std::endl;
 
    sent.swapHeadTail();
    std::cout << "Swap head & tail: " << sent << std::endl;
    std::cout << "bla bla bla" << " is" << ( ( sent.isPalindrome("bla bla bla") ) ? " " : " not " ) << "a palindrome." << std::endl;
    std::cout << "abc cba" << " is" << ( ( sent.isPalindrome("abc cba") ) ? " " : " not " ) << "a palindrome." << std::endl;
 
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru