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

Вывести те слова из текста на экран, которые отсортированы по количеству гласных букв - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Какой контейнер в STL и для чего эффективнее использовать? http://www.cyberforum.ru/cpp-beginners/thread1498826.html
Какой контейнер в STL и для чего эффективнее использовать? И почему
C++ Как сделать execl("my", "arg", argv)? Пытаюсь сделать программу под linux. Нужен такой код, который бы запускал execl с двумя моими параметрами и всеми параметрами из argv кроме первого (имя приложения). Пытался преобразовать argv в... http://www.cyberforum.ru/cpp-beginners/thread1498800.html
Не инициализируются переменные в констукторе класса C++
Не хотят инициализироватся данные после двоеточия, в следствие чего нельзя создать объект данного класса. При инициализации в теле конструктора с помощью присваивания проблем не возникает. #ifndef...
C++ Ошибки при Solutions Configuration->Release
Здравствуйте! Я пишу программу на С++ Win APi. Если поставить Solutions Configuration->Debug, программа работает нормально, то если поменять на Solutions Configuration->Release, появляется 25 ошибок...
C++ Неразрешенный внешний символ http://www.cyberforum.ru/cpp-beginners/thread1498727.html
Здравствуйте. Не понимаю почему возникает ошибка. Исходный код.obj : error LNK2019: ссылка на неразрешенный внешний символ "class Token __cdecl get_token(void)" (?get_token@@YA?AVToken@@XZ) в...
C++ Возможно ли вложение контейнера array в контейнер vector? мне надо в динамическом массиве хранить 3-х мерные координаты треугольников. пытаюсь сделать вот так: vector<array<float,9> > coordinates; данная комбинация не работает. подробнее

Показать сообщение отдельно
Геомеханик
636 / 443 / 318
Регистрация: 26.06.2015
Сообщений: 1,020
14.07.2015, 21:18
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#include <iostream>
#include <strstream>
#include <fstream>
#include <cctype>
#include <cstring>
#include <malloc.h>
#define  BLOCK   64
 
 
//Пузырьковая сортировка
template<typename T>
void bsort(T* f, T* l){
    bool lp = true;
    T*   e  = l - 1;
 
    for(; (f != l) && lp; ++f){
        lp = false;
        for(T* p = e; p > f; --p){
            if(*p < *(p - 1)){
                std::swap(*p, *(p - 1));
                lp = true;
            }
        }
    }
}
 
 
//структура содержит указатель на слово, длинну, кол-во гласных
struct info {
    const char*    p;
    unsigned short n, v;
 
    bool operator < (const info& inf) const {
        return (v < inf.v);
    }
 
    static bool _alloc(info** arr, size_t n, size_t& m){
        if(*arr == NULL){
            *arr = (info*)malloc(BLOCK * sizeof(info));
            if(*arr != NULL)
                m = BLOCK;
        } else if(n >= m){
            info* p = (info*)realloc(*arr, (m + BLOCK) * sizeof(info));
            if(p == NULL)
                return false;
            m    = m + BLOCK;
            *arr = p;
        }
        return (*arr != NULL);
    }
};
 
 
void output_ws(std::ostream& _out, std::istream& _in){
    char buf[256];
    std::string s;
 
    //читаем входной поток в строку
    while(! _in.eof() && ! _in.fail()){
        _in.read(buf, sizeof(buf)-1);
        if(_in.gcount() > 0)
            s.append(buf, buf + _in.gcount());
    }
 
    size_t cnt = 0, mem = 0;
    info*  arr = NULL;
 
    unsigned short v, n;
    const char* i, *p = s.c_str();
 
    while(*p){
        while(*p && ! std::isalpha(*p))
            ++p;
 
        i = p;
        n = v = 0;
        while(std::isalpha(*i)){
            if(std::strchr("aeiouyAEIOUY", *i) != NULL)
                ++v;
            ++i;
            ++n;
        }
 
        if(n > 0){
            if(info::_alloc(&arr, cnt, mem)){
                arr[cnt].p = p;
                arr[cnt].n = n;
                arr[cnt].v = v;
                ++cnt;
            }
        }
        p = i;
    }
 
    //сортируем
    bsort(arr, arr + cnt);
 
    //выводим
    const info* end = arr + cnt;
    for(const info* it = arr; it != end; ++it){
        _out.write(it->p, (int)it->n);
        _out << std::endl;
    }
    free(arr);
}
 
 
int main(void){
    char s[] = "information found\n no matching symbolic";
    std::istrstream sp(s);
    output_ws(std::cout, sp);
 
/*  вывести из файла
    std::ifstream fp("input.txt");
    output_ws(std::cout, fp);
    fp.close();
*/
    return 0;
}
Результат работы кода
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru