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

Написать программу, которая считывает английский текст из файла и выводит на экран слова, начинающиеся с гласных букв - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Расчет веса геометрических фигур из различных материалов http://www.cyberforum.ru/cpp-beginners/thread878184.html
Условия задания таковы: " Расчет веса геометрических фигур из различных материалов ". Нужна помощь... сразу благодарю.
C++ создание функции в С++ подскажите пожалуйста подробно как создать свою функцию в С++ через файлы .h и .cpp при компиляции выдаёт ошибку что не может распознать эти файлы http://www.cyberforum.ru/cpp-beginners/thread878093.html
C++ Указатели-массивы: Определить количество элементов, больших среднеарифметического
Сделать программу, к-рая случайно заполняет массив А (n<30) целыми значениями. Определить кол-во элементов, больших среднеарифметического. МАссив и результат вывести в файл. ДЛЯ РАБОТЫ С МАССИВОМ...
C++ exception
Суть такова , она нормально не работает , и выкидывает исключение , не могу понять в чем дело #include<iostream> #include<cstdio> #include<cstdlib> using namespace std; //------описание узла...
C++ Написать класс С++, который использует функции из библиотеки с http://www.cyberforum.ru/cpp-beginners/thread878077.html
Есть С длл как написать класс С++, который использует функции из библиотеки с? Добавлено через 37 минут это нужно писать обертку?
C++ указатель this что именно он делает Вот код: #include <iostream> class test_class { public: void set_var(int a, int b) { varOne = a; varTwo = b; } test_class operator++() { varOne++; varTwo++; return *this; } int... подробнее

Показать сообщение отдельно
UranFlex
131 / 129 / 21
Регистрация: 25.05.2013
Сообщений: 233
25.05.2013, 20:57
Мой вариант
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
//============================================================================
// Name        : vowel_in_text.cpp
// Author      : UranFlex
// Version     : 0.1 alpha
// Copyright   : GNU GPL
// Description : 1) Написать программу, которая считывает английский текст из файла и выводит на экран слова, начинающиеся с гласных букв.
//               2) Гласными считаются A, a, E, e, I, i, O, o, U, u, Y, y.
//               3) Программе при запуске требуется указать имя файла, в котором английский текст
//============================================================================
 
#include <iostream>
#include <string>
#include <sstream>
#include <fstream>
#include <cstdlib>
 
using namespace std;
 
// функция открывает указанный файл и связывает с ним свой аргумент типа "ifstream &"
ifstream &OpenFile( ifstream &, const string & );
 
// функция ищет в тексте файла все слова, начинающиеся на гласные буквы и выводит эти слова на экран,
// а если таких слов нет, то функция выводит об этом сообщение.
void PrintVowelWords( ifstream & );
 
// функция исходную строку очищает от знаков препинания
void CleanupStr( string & );
 
int main( int argc, char **argv ) {
 
    // несвязанный поток файла для ввода
    ifstream inFile;
 
    // попробовать открыть файл к тексту которого осуществляется запрос
    if ( argc < 2 || !OpenFile( inFile, argv[ 1 ] ) ) {
        cerr << "Не найден входной файл" << endl;
        return EXIT_FAILURE;
    }
 
    PrintVowelWords( inFile );
 
    return 0;
}
 
ifstream &OpenFile( ifstream &in, const string &file ) {
    in.close(); // закрыть на случай если ранее уже был открыт
    in.clear(); // восстановить состояние после любых ошибок
    // при сбое открытия поток окажется в недоступном состоянии
    in.open( file.c_str() ); //открыть указанный файл
    return in;
}
 
void PrintVowelWords( ifstream &in ) {
 
    const string VowelStr( "AaEeIiOoUuYy" ); // набор, содержащий все гласные буквы
    string bufStr; // очередная строка текста файла
    size_t counter = 0; // переменная счетчик - для подсчета слов, начинающихся с гласных
 
    // осуществить построчную обработку файла
    while ( getline( in, bufStr ) ) { // читаем из файла очередную строку
 
        CleanupStr( bufStr );// и очишаем ее от знаков препинания
        string bufToken; // переменная для хранения очердного слова строки
        // строковый поток для разбиения очередной строки на слова
        istringstream iSStream( bufStr ); // связать поток с очередной строкой
 
        while ( iSStream >> bufToken ) // осуществить обработку по одному слову
            if ( VowelStr.find( bufToken[ 0 ] ) != string::npos ) { // попробовать найти первую букву очередного слова в наборе гласных букв
                // если нашли, значит слово начинается с гласной
                ++counter; // увеличиваем счетчик слов
                cout << counter << ") " << bufToken << endl; // и выводим очередное слово, начинающееся с гласной буквы
            }
    }
 
    // если нет слов, начинающихся с гласных букв, то выводим соответствующее сообщение
    if ( counter == 0 )
        cout << "В файле нет слов, начинающихся с гласных букв!" << endl;
 
}
 
void CleanupStr( string &word ) {
 
    string ret; // строка, в которую мы скопируем все символы исходной строки кроме знаков препинания
 
    for ( string::const_iterator it = word.begin(); it != word.end(); ++it ) { // цикл по всем символам строки
        if ( !ispunct( *it ) ) // если очередной символ не знак пунктуации,
            ret += ( *it ); // то копируем его в новую строку
    }
    // в исходной строке теперь остались только слова, разделенные пробелами ( пробелов между словами м.б. один или несколько )
    word = ret; // без каких-либо знаков препинания
}
1)
Содержимое файла:
Their, possible, carrot!!? +--Lost
))((09Great
88Astra


Вывод программы:
В файле нет слов, начинающихся с гласных букв!

2)
Содержимое файла:
This is English text. Underwater,.-=+ )) ops:-)
Sample text, orange color! And, and space.
Wovel char - apple?


Вывод программы:
1) is
2) English
3) Underwater
4) ops
5) orange
6) And
7) and
8) apple
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru