Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 21
1

Обработка строк с использованием указателей: вывести слова в два столбика, по четности их длины

13.06.2014, 07:36. Показов 1352. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана строка. Распечатать слова в два столбика. 1 столбик — слова, имеющие четное количество букв, а второй — нечётное.

Добавлено через 42 секунды
help!
help!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2014, 07:36
Ответы с готовыми решениями:

Разбить прямоугольный массив на 2 по четности строк с использованием тройного указателя
Описание задачи: На базе заданной прямоугольной матрицы сделать 2, одна из которых содержит...

Вывести фамилию и имя в два столбика
Нужно вывести фамилию и имя в два столбика, у меня не получается довести до ума Код написан на...

Из слов первого столбика получить слова второго столбика
из слов первого столбика получить слова второго столбика... клоун- уклон клоун- кулон ...

Обработка массива с использованием указателей
Помогите пожалуйста изменить программу, чтобы она была с динамическим массивом Вот условие задачи:...

5
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,262
Записей в блоге: 7
13.06.2014, 12:10 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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#define UNICODE
#include <iostream>
#include <iomanip>
#include <ostream>
#include <istream>
#include <string>
#include <vector>
#include <algorithm>
#ifdef UNICODE
#include <cwchar>
#include <cwctype>
typedef wchar_t char_t;
#define T(text) L##text
#define isSpace(ch) iswspace((ch))
#else
#include <cctype>
typedef char char_t;
#define T(text) text
#define isSpace(ch) isspace((ch))
#endif// UNICODE
 
typedef std::basic_string  < char_t > string;
typedef std::basic_istream < char_t > istream;
typedef std::basic_ostream < char_t > ostream;
typedef std::vector< string > stringVector;
 
size_t some(const string &line, stringVector *w) {
    string word;
    for(string::const_iterator c = line.begin();
        c != line.end(); ++c) {
        if(isSpace(*c)) {
            if(false == word.empty()) {
                w[word.size()%2].push_back(string(word));
                word = T("");
            }
        }
        else
            word.push_back(*c);
    }
    if(false == word.empty()) {
        w[word.size()%2].push_back(word);
    }
    size_t len1 = 0;
    size_t len2 = 0;
    std::sort(w[0].begin(), w[0].end());
    std::sort(w[1].begin(), w[1].end());
    if(false == w[0].empty())
        len1 = w[0].back().size();
    if(false == w[1].empty())
        len2 = w[1].back().size();
    return (len1 > len2 ? len1 : len2);
}
int process(istream &in, ostream &out) {
    stringVector w[2];
    string line;
    size_t wspace;
    size_t count;
    
    out<<T("Enter line: ");
    std::getline(in, line);
    wspace = some(line, w)+2;
    count = std::max(w[0].size(), w[1].size());
    out.width(wspace);
    out<<T("0");
    out.width(wspace);
    out<<T("1")<<std::endl;
    for(size_t i = 0; i<count; ++i) {
        out.width(wspace);
        out<<(i<w[0].size() ? w[0].at(i) : string(T(" ")));
        out.width(wspace);
        out<<(i<w[1].size() ? w[1].at(i) : string(T("")));
        out<<std::endl;
    }
    return 0;
}
int main() {
#ifdef UNICODE
    return process(std::wcin, std::wcout);
#else
    return process(std::cin, std::cout);
#endif
}
0
Заблокирован
13.06.2014, 13:24 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
std::string init = "sss  jkjkd ssdl   erjk fddl edd ";
    std::vector<char> result;
    std::vector<std::string> a;
    std::vector<std::string> b;
    for (const char& c : init)
        if (std::isalpha(c)) result.push_back(c);
        else if (result.size()) {
            if (result.size() % 2)
                a.push_back(std::string(result.begin(), result.end()));
            else
                b.push_back(std::string(result.begin(), result.end()));
            result.clear();
        }
    for (int i = 0; i < ((a.size() > b.size()) ? a.size() : b.size()); i++) {
        if (i < b.size())std::cout << b[i];
        std::cout << "\t\t";
        if (i < a.size()) std::cout << a[i];
        std::cout << std::endl;
    };
0
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 21
15.06.2014, 07:10  [ТС] 4
Нужна помошь в легчайшей программе ^____^

Добавлено через 13 часов 49 минут
Trwsdf, помогите пожалуйста сделать не такой замудрёный код

Добавлено через 34 минуты
Cra3y, помогите пожалуйста сделать не такой замудрёный код
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
06.08.2014, 01:46 5
C++
1
2
3
4
5
6
7
    istringstream is("Lorem ipsum dolor sit amet hgf 1213kakaka cotuer132 adipiscing eli3t Aenean commodo ligula eget dolo8r hgfa");
    vector<string> a, b;
    auto pred = bind2nd(ptr_fun(isalpha<char>), locale());
    for_each(istream_iterator<string>(is), istream_iterator<string>(), [&](const string& str) { (count_if(begin(str), end(str), pred)%2 ? a:b).push_back(str); });
    size_t max_words = max(a.size(), b.size());
    for(size_t i = 0; i<max_words; ++i)
        cout<<((i<b.size())?((i<a.size())?b[i]+"\t\t"+a[i]:b[i]):"\t\t"+a[i])<<endl;
0
2848 / 1997 / 986
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
06.08.2014, 21:23 6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
int main()
{
    char const* const str = " Lorem ipsum dolor  s amet hgf 1212kakaka cotuer132 adipis ";
    for(char const* pa = str, *pb = str; *pa; pa = pb)
    {
        for(; ' ' == *pa; ++pa)
            ;
        for(pb = pa; ' ' != *pb && '\0' != *pb; ++pb)
            ;
        (std::cout << ((pb - pa) & 1 ? "                  " : "")).write(pa, pb - pa) << '\n';
    }
    return 0;
}
1
06.08.2014, 21:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.08.2014, 21:23
Помогаю со студенческими работами здесь

Обработка строки с использованием указателей
Проблема такая: Есть программа для подсчета кол-ва вхождений символа в строку и удаления...

Даны два слова (длины M и N), состоящие из букв А, Г, Ц, Т. Найти подпоследовательность наибольшей длины
Молекулы ДНК, содержащие генетическую информацию – это длинные слова из четырех букв (А, Г, Ц, Т)....

Вывести из массива 4х5 только два первых столбика
Нужно написать com-программу, которая позволит вывести из массива 4х5 только два первых столбика. ...

Вывести таблицу умножения двузначных чисел от 10 до 20 на 12 в два столбика, C++
Вывести таблицу умножения двузначных чисел от 10 до 20 на 12 в два столбика

Если приходит символ, то запустить блок создания массива в два столбика и n-ое колличество строк
Парни помогите, я никак не могу понять, и мне никто не может нормально объяснить! Сколько уже...

Обработка одномерных массивов с использованием указателей
Помогите эту программу переделать чтобы было с указателем составить программу заданной ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru