Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
28 / 5 / 9
Регистрация: 06.03.2015
Сообщений: 105
1

Работа с файлами. Найти слово, встречающееся в каждом предложении, или сообщить, что такого слова нет

13.11.2015, 13:13. Показов 2063. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создать файл, содержащий текст на английском языке. Найти слово, встречающееся в каждом предложении, или сообщить,что такого слова нет.Результат записать в новый файл

5 задача на файлы........кто хочет помогите

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<fstream>
#include<conio.h>
#include<ctime>
#include<cstdlib>
 
using namespace std;
 
int main()
{
 string str;
 char c1,c2;
 ofstream vlad("D:\\text.txt");
 
 cout<<"Vedite stroky 1: "<<endl;
 getline(cin,str);
 vlad<<str;
 vlad.close();
 
ifstream vlad1("D:\\text.txt");
ofstream den("D:\\text1.txt");
 
??????????
 
 
 
 
vlad1.close();
den.close();
getch();
return 0;
}
Добавлено через 6 минут
Все.....голова не варит результат записать в тот же файл.......откликнитесь неравнодушные
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.11.2015, 13:13
Ответы с готовыми решениями:

Дан текст. Найти слово встречающееся в каждом предложении или сообщить что такого слова нет
Дан текст. Найти слово встречающееся в каждом предложении или сообщить что такого слова нет. ...

Найти слово, встречающееся в каждом предложении, или сообщить, что такого слова нет
Я ни как не могу вывести повторяющиеся слова на экран.Помогите пожалуйста. namespace...

Найти слово, встречающееся в каждом предложении или сообщить, что такого слова нет
Помогите написать программу да Delphi которая: Найти,слово встречающиеся в каждом предложений или...

Найти слово, встречающееся в каждом предложении, или сообщить, что такого слова нет
Дана строка, содержащая текст на русском языке.Найти слово, встречающееся в каждом предложении, или...

4
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,669
13.11.2015, 15:32 2
Лучший ответ Сообщение было отмечено miros_0571 как решение

Решение

Считываешь весь текст. Делишь на предложения. Предложения делишь на слова. Поиск.

Добавлено через 1 час 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
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <set>
#include <algorithm>
#include <locale>
#include <cctype>
#include <cstdlib>
 
using namespace std;
 
int main()
{
    vector<vector<string>> a(1);
    string s;
    string all_delims = " \n\t;,.?!";
    string s_delims = ".?!";
    set<string> unique_words;
 
    locale::global(locale(""));
 
    ifstream ifs("text.txt");
    getline(ifs, s, '\0');
    ifs.close();
 
    ofstream ofs("text1.txt");
 
    size_t w_begin, w_end = 0;
    int s_i = 0;
 
    while (w_end != string::npos && (w_begin = s.find_first_not_of(all_delims, w_end)) != string::npos)
    {
        if ((w_end = s.find_first_of(all_delims, w_begin)) != string::npos)
        {
            a[s_i].push_back(s.substr(w_begin, w_end - w_begin));
            if (s_delims.find(s[w_end]) != string::npos) a.resize(++s_i + 1);
        }
        else
            a[s_i].push_back(s.substr(w_begin));
    }
 
    if (a[a.size() - 1].size() == 0) a.resize(a.size() - 1);
 
    for (vector<string> &snt : a)
        for (string &word : snt)
        {
            for_each(word.begin(), word.end(), [](char &c){ c = tolower(c); });
            unique_words.insert(word);
        }
 
    for (vector<string> &snt : a)
    {
        for (string &word : snt) cout << word << endl;
        cout << endl;
    }
 
    int uw_count = 0;
    for (const string &uw : unique_words)
    {
        bool f = true;
 
        for (vector<string> &snt : a)
            if (find(snt.begin(), snt.end(), uw) == snt.end())
            {
                f = false;
                break;
            }
 
        if (f)
        {
            ++uw_count;
            ofs << uw << endl;
        }
        if (f) cout << uw << endl;
    }
 
    if (uw_count == 0) ofs << "Слова не найдены.\n";
 
    ofs.close();
 
    system("pause");
}
1
28 / 5 / 9
Регистрация: 06.03.2015
Сообщений: 105
13.11.2015, 21:30  [ТС] 3
nmcf, Спасибо Вам огромное, Вы всегда приходите на помощь
Вот мой вариант

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
#include<iostream>
#include<string>
#include<fstream>
#include <stdio.h>
#include<conio.h> 
using namespace std;
int main()
{
    char word[100], line[100];
    char divider[]=",. !?";
    
    ofstream vlad;
    vlad.open("D:\\text.txt");
    string str;
    cout<<"Vvedite stroky: "<<endl;
    getline(cin,str);
    vlad<<str<<"\n"; 
    vlad.close();
    
    cout<<"Vvedite slovo: ";
    cin>>word;
    vlad<<word<<"\n"; 
    
    ifstream den("D:\\text.txt");
    ofstream denn("D:\\text1.txt");
    
    int count=0;
    char *ptr;
    while(den.getline(line,100))
    {
    ptr=strtok(line,divider);//chitaem do konca
    while(ptr !=NULL)
    {
    if(!strcmp(ptr,word))count++;//sravnivaem vvedennoe slovo s poluchenim
    ptr=strtok(NULL,divider);
    }      
    }
    if(count>0)
    {
    cout<<"kolichetvo takix slov "<<count;
    denn<<"kolichetvo takix slov "<<count;  
    }
    else 
    {cout<<"net takogo slova\n";}
    denn.close();
        getch();
        return 0;
}
0
365 / 321 / 219
Регистрация: 21.02.2013
Сообщений: 756
18.11.2015, 14:46 4
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
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <vector>
#include <cctype>
#include <set>
using namespace std;
void my_tolower(string& str){
 
    for(size_t i = 0; i != str.size();i++)
    {
        str[i] = tolower(str[i]);
    }
 
}
bool my_find(string str1, string str2)
{
    my_tolower(str1);
    my_tolower(str2);
    string tmp;
     istringstream iss(str1);
    while(iss>> tmp)
    {
        if(tmp == str2){
            //cout << tmp;
            return true;
        }
    }
    return false;
 
}
int main()
{
    ifstream inf("txtfile.txt");
    string str, tmp, buf;
    vector<string> vec;
    bool flag;
    set<string> container;
    if(!(inf.peek() == ifstream::traits_type::eof())){
 
    getline(inf,str, '.');
 
    istringstream iss(str);
 
    while (getline(inf,tmp, '.'))
       if(tmp.size()> 5)// vot zdesj postavil 4to bi boljwe 5 razmer predlozenija bil a to hvataet raznij musor v konce faila
       vec.push_back(tmp);
 
 
     for(vector<string>::size_type i = 0; i != vec.size(); i++)
        cout << vec[i]<< """<<endl;
    while(iss>> tmp)
    {
        flag = true;
        //cout << tmp;
        for(vector<string>::size_type i = 0; i != vec.size(); i++)
        {
            //cout << vec[i] << endl;
            if(!my_find(vec[i], tmp))
            {
                flag = false;
            }
        }
        if(flag) {cout << tmp;container.insert(tmp);}
 
    }
    ofstream outfile;
 
  outfile.open("txtfile.txt",ios_base::app);
    if(!container.empty())
        for(set<string>::iterator it= container.begin();  it != container.end(); it++)
            outfile << *it << "  ";
    else
    outfile<< "takih slov ne najdeno";
    }
 
return 0;
}
1
28 / 5 / 9
Регистрация: 06.03.2015
Сообщений: 105
18.11.2015, 15:40  [ТС] 5
jurok_85, Спасибо....но мы векторы не проходили....преподаватель мой вариант принял
0
18.11.2015, 15:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2015, 15:40
Помогаю со студенческими работами здесь

Найти слово, встречающееся в каждом предложении текста, или сообщить, что такого слова нет
доброго времени суток! подскажите по поводу реализации,как выполнить поиск слова,встречающегося в...

Дан текстовый файл. Найти слово, встречающееся в каждом предложении, или сообщить, что такого слова нет
program L7N1; uses crt; Var Words:array of string; S,word :string; F:text; ...

Файл: Найти слово, встречающееся только в одном предложении, или сообщить, что такого слова нет
Помогите пожалуйста. Задача: Дан файл, содержащий текст на английском языке. Найти слово,...

Найти слова, встречающиеся в каждом предложении, или сообщить, что таких слов нет
Разработать программу решения задачи.Дан файл, содержащий текст на русском языке.Найти слова,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru