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

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

Войти
Регистрация
Восстановить пароль
 
Nadia Trofimova
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 25
#1

Задача со строками; запись в файл - C++

19.02.2014, 18:09. Просмотров 212. Ответов 2
Метки нет (Все метки)

1. Написать программу, которая, считывает текст из файла, находит самое длинное слово и определяет, сколько раз оно встретилось в тексте. Найденное слово и количество его повторений записать в новый файл.
Здраствуйте!
Такое задание, я его сделала, но программа не производит запись данных в файл g. помогите пожалуйста!

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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
#include <iostream>
#include <fstream>
#include <string.h>
 
 
using namespace std;
const int  str_size_max = 100000;
const int name_max=1000;
 
 
void CreateFile(char fname[str_size_max], ofstream &fout);
void ReadFile(char fname[str_size_max],ifstream &fin);
void File_G(char fname[str_size_max],char gname[str_size_max],ifstream &fin,ofstream &gout);
 
int main()
{
    char filenamef[str_size_max],filenameg[str_size_max];
    char c,choice, choice2;
    do{
 
        cout<<"Enter name for new file f: ";
        cin>>filenamef;
 
        ofstream fout;
        ifstream fin;
        cout<<endl<<"Create new file? (y/n)"<<endl;
        cin >> choice;
        switch (choice)
        {
        case 'y':
            CreateFile(filenamef,fout);
            ReadFile(filenamef,fin);
            break;
        case 'n':
            cout<< "Do you want to read file in this programm?(y/n)"<<endl;
            cin>>choice2;
            switch(choice2)
            {
            case 'y':
                ReadFile(filenamef,fin);
                break;
 
            case 'n':
                cout<<endl;
            }
            break;
        default:
            cout<<"Error"<<endl;
        }
 
        cout<<"Enter name for new file g: ";
        cin>>filenameg;
 
 
        ofstream gout;  //создание класса файла для записи
        File_G(filenamef,filenameg,fin,gout);   //анализ файла f
 
        ifstream gin;       //создание класса файла для чтения
        ReadFile(filenameg,gin);    //вызов функции чтения файла gin
        cout<<"Do you want to continue? Press 'y' "<< endl;
        cin>>c;
        system("cls");
    }while(c=='y');
    return 0;
}
void CreateFile(char fname[str_size_max], ofstream &fout)
{
    fout.open(fname);
    char st[str_size_max];
    if(fout.is_open())
    {
        cout<<"Enter words:" << endl;
        cin.get();
        cin.getline (st, str_size_max);
        while (st[0] != '*')
        {
            fout << st;
            fout << "\n";
            cin.getline (st, str_size_max);
 
        }
    }
    else
    {
        cout<<"Error!"<<endl;
        exit(1);
    }
 
    fout.close();
}
 
void ReadFile(char fname[str_size_max],ifstream &fin)
{
    fin.open(fname);
    cout<<"contents of "<<fname<<":\n";
    char st[str_size_max];
    if(fin.is_open())
    {
        while (fin.getline(st,str_size_max))
        {
            cout<<st;
            cout<<"\n";
        }
    }
    else
    {
        cout<<"Error!"<<endl;
        exit(1);
    }
    fin.close();
}
 
 
void File_G(char fname[str_size_max],char gname[str_size_max],ifstream &fin,ofstream &gout)
{
    fin.open(fname);
    gout.open(gname);
    if(!fin.is_open())
    {
        cout<<"Error fin!"<<endl;
        exit(1);
    }
    if(!gout.is_open())
    {
        cout<<"Error gout!"<<endl;
        exit(1);
    }
 
    char st[str_size_max];
    int max_size=0; //текущий максимум
    int tmp_size=0; //текущий размер слова
    int k=0;
    char char_max[name_max]; // текущее максимальное слово
    char char_tmp[name_max]; // текущее слово
 
    while ( fin.getline(st, str_size_max) )
    { st[strlen(st)]=' ';
    for (unsigned int i=0;i<strlen(st);i++)
    {
        if (st[i]==' ' || st[i]=='\n')
        {
            if (tmp_size>max_size)
            {
                max_size=tmp_size;
                strcpy(char_max,char_tmp);
                k=0;
            }
            if (tmp_size==max_size)
            {
                if (strcmp(char_max,char_tmp)==0) k++;
            }
            tmp_size=0;
        }
        else
        {
            char_tmp[tmp_size]=st[i]; // добавляем в конец текущего слова текущий символ
            tmp_size++; // увеличиваем количество символов текущего слова
        }
    }
 
    }
 
 
 
    gout<<"max_size - "<<max_size<<'\n';
    for (int j=0;j<max_size;j++)
        gout<<char_max[j];
    gout<<'\n'<<"count - "<<k;
 
    gout.close();
    fin.close();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2014, 18:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задача со строками; запись в файл (C++):

Дан входной текстовый файл. Заполните Выходной файл только теми строками, в которых ровно k символов ch - C++
Дан входной текстовый файл. Заполните Выходной файл только теми строками, в которых ровно k символов ch

Работа со строками, поиск, запись - C++
Дорогие друзья, пишу программу. При написании возникли проблемы, а точнее столь слабые познания в с++. Имеем .xml файл вида: ...

Задача со строками - C++
Готовлюсь к ЕГЭ и решаю задачи на программирование. Вот столкнулся с проблемой. Ниже приложу саму задачу и код, который я написал....

Задача со строками - C++
Условие: Дана строка текста, в которой слова разделены пробелами. Необходимо: ***************************** - определить количество...

Задача со строками - C++
ПРОГРАММА НА ЯЗЫКЕ СИ!!!!!!!нужен код тоже в СИ))))) Всем привет, нужна помощь в изменении части кода в частности это код для задачи ...

Задача со строками - C++
Есть задача с 4 условиями.2 из них сделал,но 2 не правильно работает.Еще нужно сделать 2.Помогите пожалуйста=) 1)Определить минимальную...

2
EragonJKee
9 / 10 / 1
Регистрация: 19.01.2014
Сообщений: 83
19.02.2014, 19:22 #2
// Не разобрался полностью в чем проблема, временно удалю сообщение
0
Nadia Trofimova
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 25
19.02.2014, 20:20  [ТС] #3
Смотрите, какую ошибку выдаёт при использовании strcpy_s
0
Миниатюры
Задача со строками; запись в файл  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2014, 20:20
Привет! Вот еще темы с ответами:

задача со строками - C++
пожалуйста, помогите. Нужно написать программу , которая определит длину введенной строки L, и, если L&gt;10, то удаляются все цифры. я...

Задача с файлами и строками! - C++
В текстовом файле записаны строки длиной не более 255 символов, слова в которых разделены хотя бы одним пробелом или знаками препинания. В...

Задача со строками библиотеки STL - C++
Приветствую тех, кто пришёл сюда помочь юному падавану, желающему познать силу С++. К делу. У меня стоит задача : Создать программу,...

Задача в С++. ТЕМА : ОПЕРАЦИИ СО СТРОКАМИ - C++
ТЕМА : ОПЕРАЦИИ СО СТРОКАМИ Напишите программу, которая вставляет символ тире после каждого перехода с буквы на цифру и наоборот с...


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

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

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