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

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

Войти
Регистрация
Восстановить пароль
 
Saratnik
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 23
#1

Найти и вывести на экран слова, которые входят в текст только один раз. Исправьте ошибки в коде - C++

14.01.2014, 05:22. Просмотров 623. Ответов 0
Метки нет (Все метки)

В произвольном тексте (взятом из файла), содержащем не более 10 строк, в каждой строке не более 80 символов (текст вывести на экран), найти и вывести на экран слова, которые входят в текст только один раз. Посчитать для каждой строки сколько раз встречаются такие слова. Вывести статистическую информацию по каждой строке. Выведенную информацию продублировать в выходной текстовый файл, имя файла задает пользователь.

Исправьте ошибки плиз.
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#include <iostream>
#include <fstream>
#include <string>
#include <locale>
using namespace std;
 
const int m = 10;
char *s[m];
char wstr[80];
 
char* Array[1000];
int i,k,j, kol_str, dl_str, count_str = 0;
string FNameIn = "input.txt";
string FNameOut = "output.txt";
string result = "";
string words ="";
 
 
void AskFilename()
{
    cout<<"Пожалуйста, введите название для входного файла: ";
    cin >> FNameIn;
    cout << endl;
 
    cout << "Введите название для выходного файла: ";
    cin >> FNameOut;
    cout << endl;
}
 
bool ReadFile()
{
    int curline = 0;
 
    ifstream in1(FNameIn.c_str());
    if (!in1)
    {
        cout << "Невозможно открыть файл " << FNameIn << endl;
        return false;
    }
    while(!in1.eof())
    {
        char S[80] = {""};
        in1.getline(S, 80);
        s[curline] = new char[strlen(S+1)];
        strcpy(s[curline], S);
        curline++;
    }
 
    kol_str = curline;
    return true;
}
 
bool Parse(string word)
{
    char* ar = new char[];
    strcpy( ar, word.c_str() );
 
    for (int i = 0; i < 1000; i++)
    {
        if (!strcmp(Array[i],ar))
        {
            return false;
        }
    }
    Array[count_str]=ar;
        count_str++;
        return true;
}
 
void ParseFile()
{
    int count_words = 0;
    cout << endl << "Первоначальный текст" << endl << endl;
    for (i=0; i<kol_str; i++)
    {
        dl_str = strlen(s[i]);
        string word = "";
 
        for (j = 0; j<=dl_str; j++)
        {
            cout << s[i][j];
            if (!(s[i][j] == ' ' || s[i][j] == '\0' || s[i][j] == '.' ||s[i][j] == ',' || s[i][j] == '\n'))
            {
                word += s[i][j];
            }
            else 
            {
 
                if (word != "") 
                {
                    if (Parse(word)) 
                    {
                        count_words++;
                        words += word;
                        words += "\n";
                        
                    }
                }
                word = "";
            }
        }
 
        result += "Слов, которые больше нигде не встречаются, в строке " + to_string(i+1) + ": " + to_string(count_words) + " штук\n" ;
        count_words = 0;
        cout << endl;
    }
}
 
void PrintResult()
{
    cout << endl << "Встречающиеся только один раз слова: " << endl;
    cout << words <<endl;
    cout << result;
}
 
bool SaveResult()
{
 
    ofstream out(FNameOut);
    if (!out)
    {
        cout << "Невозможно создать файл " << FNameOut << endl;
        return false;
    }
    out << endl << "Встречающиеся только один раз слова: " << endl;
    out << words <<endl;
    out << result;
    cout << endl << endl << "Итоговый текст был успешно сохранен" << endl;
    return true;
}
 
int main()
{
 
    for (int i=0;i<1000;i++)
    {
        Array[i]=new char[50];
    }
 
    setlocale(0, "");
    AskFilename();
    if(ReadFile()) {
    ParseFile();
    PrintResult();
    SaveResult(); }
    system("PAUSE");
}
Добавлено через 23 часа 30 минут
Что не кто помочь не может??
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2014, 05:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти и вывести на экран слова, которые входят в текст только один раз. Исправьте ошибки в коде (C++):

Вывести только те слова сообщения, которые встречаются в тексте один раз - C++
Дано осмысленное текстовое сообщение (т.е. алфавитно-цифровая информация, разделенная пробелами и знаками препинани, в конце которого...

Вывести только те слова сообщения, которые встречаются в нем ровно один раз - C++
Дано осмысленное текстовое сообщение (т.е. алфавитно-цифровая информация, разделенная пробелами и знаками препинани, в конце которого...

Вывести только те слова сообщения, которые встречаются в нем ровно один раз - C++
Вывести только те слова сообщения, которые встречаются в нем ровно один раз. Помогите исправить ошибку в коде. #include &lt;iostream&gt; ...

Удалить из текста все слова, которые входят в него один раз - C++
Здравствуйте. Необходимо изъять из заданного текста, все слова которые входят в него один раз. Как разделить текст на слова, я примерно...

Напечатать слова, которые встречаются в двух предложениях только один раз (Pascal -> C++) - C++
Задание если понадобится: Даны два предложения. Напечатать слова, которые встречаются в двух предложениях только один раз. uses crt;...

Строки в С++ - вывести слова, которые встречаются один раз - C++
вывести только те слова сообщения,которые встречаются в нем ровно один раз.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2014, 05:22
Привет! Вот еще темы с ответами:

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

Найти слова, в которых символ в центре слова и в оставшейся части встречается только один раз - C++
Задание: Слово имеет нечетное количество символов, и символ, находящийся в центре слова, в оставшейся части этого слова встречается...

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

Вывести только те слова сообщения, которые встречаются в нем более n раз - C++
Нужно выполнить эту задчку используя только библиотеки string и iostream. Буду очень благодарен, если вам не трудно. Дано...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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