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

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

Восстановить пароль Регистрация
 
Saratnik
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 23
14.01.2014, 05:22     Найти и вывести на экран слова, которые входят в текст только один раз. Исправьте ошибки в коде #1
В произвольном тексте (взятом из файла), содержащем не более 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++ задача на строки на С.Даны 2 слова.Напечатать только те буквы слов,которые встречаются в обоих словах только один раз.
Строки в С++ - вывести слова, которые встречаются один раз C++
C++ Дан текст и некоторые два слова. Определить, сколько раз они входят в текст и...
Вывести только те слова сообщения, которые встречаются в тексте один раз C++
Вывести только те слова сообщения, которые встречаются в нем ровно один раз C++
C++ Напечатать слова, которые встречаются в двух предложениях только один раз (Pascal -> C++)
Удалить из текста все слова, которые входят в него один раз C++
Найти слова, в которых первая буква присутствует только один раз, и слова капслоком C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 15:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru