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

поправьте меня (Определите, сколько различных слов содержится в тексте) - C++

Восстановить пароль Регистрация
 
BabyGluk
26 / 26 / 4
Регистрация: 10.04.2013
Сообщений: 167
27.09.2013, 01:40     поправьте меня (Определите, сколько различных слов содержится в тексте) #1
Кликните здесь для просмотра всего текста
Во входном файле (вы можете читать данные из файла input.txt) записан текст. Словом считается последовательность непробельных символов идущих подряд, слова разделены одним или большим числом пробелов или символами конца строки.

Определите, сколько различных слов содержится в этом тексте.


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
#include <iostream>
#include<set>
#include<string>
using namespace std;
int main(int args, char* argv[]) 
{ 
set<string> s;
 char str_file[100]; 
 string tmp;
 FILE* fp = fopen("input.txt","r"); 
 if(fp != NULL) 
 { 
 
 char ch; 
 while((ch = getc(fp)) != EOF) 
   tmp +=ch;
 
 if (tmp.find(' ')) {
     tmp.resize(tmp.size()-1);
 
     s.insert(tmp);
     tmp = "";
 }
 cout<<s.size();
} 
else printf("Невозможно открыть файл на чтение.\n"); 
 fclose(fp); 
 
 system("pause");
 
 return 0; 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2013, 01:40     поправьте меня (Определите, сколько различных слов содержится в тексте)
Посмотрите здесь:

Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте? C++
C++ Сколько слов, состоящих только из прописных букв, содержится в сообщении
Подсчитать сколько слов, состоящих только из прописных букв, содержится в сообщении, и в каждом таком слове изменить все буквы на заглавные. C++
Определить, сколько слов в тексте начинается на заданную букву C++
Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6176 / 2905 / 284
Регистрация: 04.12.2011
Сообщений: 7,730
Записей в блоге: 3
27.09.2013, 04:31     поправьте меня (Определите, сколько различных слов содержится в тексте) #2
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
#include <iostream>
#include <string>
#include <vector>
#include<fstream>
using namespace std;
int main(){
std::string f = "iput.txt";
const char* filename = f.c_str();
const char* out_cstring = "asd bse\thgte\ndfgh asd\nbse fd\t asa";
ofstream out_file(filename, ios::out);
out_file<<out_cstring;
out_file.close();
 
ifstream in_file(filename, ios::in);
vector<string> origin_str;
string word;
string rezult;
while (in_file >> word){
    origin_str.push_back(word);
cout<<word<<endl;
rezult+=word+" ";
}
cout << "rezult " << rezult << endl;
in_file.close();
 
vector<string> copy_str(origin_str);
size_t words_number = origin_str.size();
int *arr_of_duplications = new int[words_number];
for(size_t i = 0; i < words_number; ++i)arr_of_duplications[i]=0;
 
for(size_t i = 0; i < words_number; ++i){
    for(size_t j = 0; j < words_number; ++j){
        if(origin_str[i] == copy_str[j]){
            arr_of_duplications[i] += 1 ;
                    }
    }
}
cout<<endl;
size_t different_words_number=0;
for(size_t i = 0; i < words_number; ++i){
if(arr_of_duplications[i]==1)different_words_number++;
}
cout<<"Common nuber of different words is: "<<different_words_number<<endl;
delete []arr_of_duplications;
cin.get();   
return 0;
}
BabyGluk
26 / 26 / 4
Регистрация: 10.04.2013
Сообщений: 167
27.09.2013, 08:22  [ТС]     поправьте меня (Определите, сколько различных слов содержится в тексте) #3
спасибо большое))
глянул на код, вспомнил работу с файлами =)
на самом деле все было куда проще)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include<set>
#include<string>
#include<fstream>
using namespace std;
int main(int args, char* argv[]) 
{ 
    set<string> s;
    string f = "input.txt";
    const char* filename = f.c_str();
    ifstream in_file(filename, ios::in);
    ofstream out_file("output.txt",ios::out);
    string word;
    string rezult;
 
    while (in_file >> word){
    s.insert(word);
    }
    out_file << s.size();
    return 0; 
}
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6176 / 2905 / 284
Регистрация: 04.12.2011
Сообщений: 7,730
Записей в блоге: 3
27.09.2013, 12:24     поправьте меня (Определите, сколько различных слов содержится в тексте) #4
Цитата Сообщение от BabyGluk Посмотреть сообщение
на самом деле все было куда проще)
Зачем же спрашивали? Конечно, используя множество можно и не знать, что там делается, но мне было бы веселее, если бы Вы спросили, что-то вроде: - "А зачем вектор копии создавать, когда можно было по исходному пройти?"
BabyGluk
26 / 26 / 4
Регистрация: 10.04.2013
Сообщений: 167
27.09.2013, 13:07  [ТС]     поправьте меня (Определите, сколько различных слов содержится в тексте) #5
Цитата Сообщение от IGPIGP Посмотреть сообщение
Зачем же спрашивали? Конечно, используя множество можно и не знать, что там делается, но мне было бы веселее, если бы Вы спросили, что-то вроде: - "А зачем вектор копии создавать, когда можно было по исходному пройти?"
спрашивал, просто забылся как читать слова с файла =)
спасибо большое)
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6176 / 2905 / 284
Регистрация: 04.12.2011
Сообщений: 7,730
Записей в блоге: 3
27.09.2013, 14:47     поправьте меня (Определите, сколько различных слов содержится в тексте) #6
Цитата Сообщение от BabyGluk Посмотреть сообщение
спасибо большое)
Не за что.)
Yandex
Объявления
27.09.2013, 14:47     поправьте меня (Определите, сколько различных слов содержится в тексте)
Ответ Создать тему
Опции темы

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