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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
kazahec
3 / 3 / 0
Регистрация: 05.04.2011
Сообщений: 25
#1

поиск слов, состоящих из прописных букв - C++

05.04.2011, 22:20. Просмотров 1264. Ответов 3
Метки нет (Все метки)

всем доброго времени суток, собственно сабж, необходимо найти слова, содержащиеся в файле, которые состоят только из прописных букв.
проблема в том что необходимо использовать список, линейный не кольцевой, т.е. есть исходный файл с текстом, далее необходимо этот текст скопировать в другой файл, и вывести список слов, которые соответствуют заданию(состоят только из прописных букв)
вот кое какой код из проги...
в файле вордлист -
там, где начинается fout<<"\n\nResult:\n";while (current) должно быть какое то условие того, что буквы в слове прописные, я думаю понятно что конструкция current->word[0] - первый символ слова, а current->word[current->word.size()-1] - последний.. эмм вопрос в том - использовать ли функцию isupper() или сделать по другому, используя таблицу ascii например оО

исходник *.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "WordList.h"
#include <iostream>
 
using namespace std;
 
int main()
{
    ifstream text("text.txt");          //открытие потока файла для входного файла
    ofstream fout("outfile.txt");       //открытие потока для выходного файла
 
    WordList List;
 
 
    List.word_list(text);
 
    text = *(new ifstream("text.txt"));
    List.result(text, fout);
 
    return 0;
}
заголовочный WordList.h

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
#include "Text_Base.h"
 
class WordList : public Text_Base  
{
private:
    char posl;
public:
    WordList();
    ~WordList();
    void result(ifstream &txt, ofstream &fout);
};
 
WordList::WordList()
{
    first = NULL;
}
 
WordList::~WordList()
{
 
}
 
void WordList::result(ifstream &txt, ofstream &fout)
{
    fout<<"Input file: \n\n";
    
    while(!txt.eof())//Пока не конец файла
    {
        char ch;
        
        txt.read(&ch,1);
        fout<<ch;//посимвольная запись в файл
    }
    
    cout<<Rus("Эхо-печать выполнена!\n");
    cout<<"=================================================|\n";
    int kol=0;              //счетчик найденных слов
    link* current = first;
    
 
    fout<<"\n\nResult:\n";
           
    while (current)
    {
    if ((current->word[0] ==isupper(??))&&(current->word[current->word.size()-1] == isupper(??)))
        {
            fout<<current->word<<"\n";
            kol++;
        }
        current = current->next;
    }
    if(!kol)
        fout<<"Words aren't found!=(\n";
}
заголовочный Text_Base.h
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
#pragma once
#include <string>
#include <fstream>
#include <iostream>
#include <windows.h>
 
using namespace std;
 
char bufRus[256];
char* Rus(const char* txt) 
{
    CharToOem(txt, bufRus);
    return bufRus;
}
//////////////////////////////////////////////////////////////////////////////////////
struct link
{
    string word;
    link* next;
};
 
 
class Text_Base  
{
protected:
    link* first;
    char posl;
public:
    Text_Base();
    void word_list(ifstream &text); //выделение слов и заполнение списка.
    void Echo(ifstream &txt, ofstream &of);     //Эхо-печать исходного текста.
    virtual ~Text_Base() = 0;
 
};
///////////////////////////////////////////////////////////////////////////////////////
Text_Base::Text_Base()
{
    first = NULL;
}
 
Text_Base::~Text_Base()
{
}
 
void Text_Base::word_list(ifstream &text)
{
    string tmp_word = "";
    char ch;
    do
    {
        
        text.read(&ch,1);
    
        if ((ch != '.') && (ch != ',') && (ch != '!') && (ch != '-')&& (ch != '?') && (ch != ' ') && (ch != '\n'))
        {
            tmp_word += ch;
            posl=ch;
        }
        else
        {
            link* tmp_link = new link;  //заполнение
            tmp_link->word=tmp_word;    //списка
            tmp_link->next=first;       
            first = tmp_link;           
            posl = tmp_word[tmp_word.size()-1];
    //      cout<<tmp_word;
            tmp_word = "";
        }
 
    }
    while (!text.eof());
    cout<<Rus("Слова определены!\n");
    cout<<"=================================================|\n";
            
}
 
void Text_Base::Echo(ifstream &txt, ofstream &of)
{
    of<<"Input file: \n\n";
    while(!txt.eof())//Пока не конец файла
    {
        char ch;
        
        txt.read(&ch,1);
        of<<ch;//посимвольная запись в файл
    }
    cout<<Rus("Эхо-печать выполнена!\n");
 
    cout<<"=================================================|\n";
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2011, 22:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос поиск слов, состоящих из прописных букв (C++):

Сколько слов, состоящих только из прописных букв, содержится в сообщении - C++
Всем привет.Есть такое вот задание: Подсчитать сколько слов, состоящих только из прописных букв, содержится в сообщении, и в каждом таком...

Подсчитать сколько слов, состоящих только из прописных букв, содержится в сообщении, и в каждом таком слове изменить все буквы на заглавные. - C++
Подсчитать сколько слов, состоящих только из прописных букв, содержится в сообщении, и в каждом таком слове изменить все буквы на заглавные.

Подсчитать, сколько было введено: латинских прописных букв, кириллических прописных букв, цифр, знаков переноса, прочих символов. - C++
Помогите, пожалуйста, написать программу :scratch: Подсчитать, сколько было введено: латинских прописных букв, кириллических прописных...

Сколько слов, состоящих из неболее 4 букв - C++
Здравствуйте! Помогите плиз ! Очень срочно ! Написать программу, которая считывает текст из файла и определяет,сколько в нем...

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

Определить количество слов в тексте, состоящих из K букв. C#/C++ - C++
Даны числа K и текст из слов разделенными пробелами, в конце точка. Определить количество слов в тексте, состоящих из K букв. Помогите...

3
Subgrando
40 / 40 / 3
Регистрация: 28.01.2011
Сообщений: 175
05.04.2011, 23:01 #2
C++
1
2
3
4
5
6
7
bool is_upper_word(char* word) {
    int len = strlen(word);
    for(int i = 0; i < len; i++) {
        if(!isupper((int)word[i])) return false;
    }
    return true;
}
1
kazahec
3 / 3 / 0
Регистрация: 05.04.2011
Сообщений: 25
06.04.2011, 15:26  [ТС] #3
спасип, щас попробую ввернуть)

Добавлено через 1 час 1 минуту
есть еще идеи, где лучше организовать поиск и заполнение списка7)

Добавлено через 15 часов 19 минут
все еще актуально)
0
kazahec
3 / 3 / 0
Регистрация: 05.04.2011
Сообщений: 25
07.04.2011, 16:02  [ТС] #4
может будет кому интересно..

реализовал с помощью возврата кода буквы с помощью инт..

после цикла while(current) в вордлисте было добавлено следующее...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
while(current)
{
bool isbig=true;
for (int i=0; i<current->word.size(); i++)
                
            if(!( ( int(current->word[i])>=(-64) )&& (int(current->word[i])<=(-33)) ) )
                                
                isbig=false;
 
            if (isbig)
 
            {
                fout<<current->word<<"\n";
                kol++;
            }
 
            else isbig=true;
}
как то так=)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2011, 16:02
Привет! Вот еще темы с ответами:

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

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

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

Дана строка символов. Определить количество слов состоящих из четырех букв - C++
#include &lt;iostream.h&gt; #include &lt;string.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; #include &lt;locale.h&gt; int...


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
07.04.2011, 16:02
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru