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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Alex_Skripa
18 / 18 / 1
Регистрация: 16.09.2013
Сообщений: 126
#1

Работа с текстовыми файлами си++ - C++

26.10.2013, 14:52. Просмотров 2156. Ответов 23
Метки нет (Все метки)

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
#include "stdafx.h"
#include <iostream>
#include <string>
#include <string.h>
#include <math.h>
#include <fstream>
#include <windows.h>
using namespace std;
 
void train()
{
    fstream f;
    string word,check,pre;
    bool t;
    do
    {
        label:cout <<"\nДля выхода из обучения введите ""0""";
        t=false;
        cout <<"\nВведите новое слово --> ";cin >>word;
        if (word!="0")
        {
           f.open("D:\\cловарь.txt");
           if (f)
           {
               while (!f.eof())
               {
                   f >>check;
                   if (check==word) t=true; 
               }
           }
           else cout <<"\nСоздайте словарь!";
           f.close();
           if (t)
           {
               cout <<"\nДанное слово уже присутствует в словаре!!!Попробуйте другое слово!!!";
               goto label;
           }
           else
           {
               f.open("D:\\cловарь.txt",ios::app);
               f <<word<<"\n";
               /*cout <<word.length()<<"\n";
               cout <<"Первая буква----->"<<word[1]<<"\n";*/
               f.close();
           }
           }
    }
    while(word!="0");
}
 
void words()
{
    fstream f1,f;
    string word,check;
    int i,j,k;
    bool *t;
    cout <<"\nВведите ключевое слово\n";
    cin >>word;
    t=new bool [word.length()];
    f1.open("D:\\Результаты.txt");
    f1 <<"Ваше ключевое слово-------->"<<word;
    f1 <<"\nСоставленные слова:";
    f1.close();
    [COLOR="Red"]f.open("D:\\словарь.txt");
    if (f)[/COLOR]
    {
         while (!f.eof())
               {
                   f >>check;
                   if(check.length()<=word.length())
                   {
                       for(i=0;i<word.length();i++)
                           t[i]=false;
                       k=0;
                       for(i=0;i<check.length();i++)
                           for(j=0;j<word.length();j++)
                           {
                               if ((check[i]==word[j])&&(!t))
                               {
                                   k++;
                                   t[j]=true;
                                   break;
                               }
                           }
                       if (k==check.length())
                       {
                           f1.open("D:\\Результаты.txt",ios::app);
                           f1 <<"\n--->"<<check;
                           f1.close();
                       }
                   }
               }
    }
    else cout <<"\nФайл словарь не найден!!! Для создания запустите обучение...";
    f.close();
}
 
int main()
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    int mode;
    cout <<"Выберите режим работы программы:";
    cout <<"\nРежим обучения--------------------->0";
    cout <<"\nРежим составления слов-------->Другое\n";
    cin >>mode;
    if (mode==0) train();
    else words();
    getchar();
    getchar();
    return 0;
}
не могу разобраться почему не работает выделенный фрагмент. Возникает ошибка при открытие файла... Хотя предыдущая функция спокойно открывает и дополняет файл, подскажите в чем проблемка
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2013, 14:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с текстовыми файлами си++ (C++):

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

Работа с текстовыми файлами - C++
Есть текстовый файл в котором существует последовательность чисел. Нужно создать текстовый файл содержащий все числа в обратном порядке. ...

Работа с текстовыми файлами в С++ - C++
Каким образом можно организовать эту программу, в частности определение цифры и латинской буквы и их распределение по файлам. Чот в тупике...

Работа с текстовыми файлами - C++
Разработать программу, которая: а) создает текстовый файл TF5_1 с символьных строк различной длины; б) читает содержимое файла TF5_1,...

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

Работа с текстовыми файлами - C++
Функция копирует с одного файла в другой, не подскажите как улучшить ее? И есть недостаток нужно подсчитывать количество элементов в файле...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.10.2013, 18:21 #16
Цитата Сообщение от Alex_Skripa Посмотреть сообщение
называл словарь.txt
Если расширения не видно, то нужно (имеется ввиду, при ручном создании, в папке проекта) называть просто словарь, расширение система добавляет. Иначе получается такое название файла: словарь.txt.txt. В папке проекта файл должен выглядиет как: словарь (без расширения, раз они не вдины).
1
Alex_Skripa
18 / 18 / 1
Регистрация: 16.09.2013
Сообщений: 126
27.10.2013, 18:52  [ТС] #17
Цитата Сообщение от alsav22 Посмотреть сообщение
Если расширения не видно, то нужно (имеется ввиду, при ручном создании, в папке проекта) называть просто словарь, расширение система добавляет. Иначе получается такое название файла: словарь.txt.txt. В папке проекта файл должен выглядиет как: словарь (без расширения, раз они не вдины).
Я сума сойду щас) Результаты.txt то норм воспринимает, но спасибо за инфу буду знать, и да еще сейчас создал новый проект в него вставил весь код, тот же, заменил английское название на русское и работает,,,, это кошмар, теперь беру старый проект проделываю то-же самое, и.... не работает, это дурдом какой то... Я реально не понимаю в чем тут проблема.

Добавлено через 24 минуты
Возможно ли что проект криво компилировался???
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.10.2013, 18:59 #18
Цитата Сообщение от Alex_Skripa Посмотреть сообщение
Результаты.txt то норм воспринимает
Этот файл у вас из кода создавался, а не вручную. В папке он, наверное, выглядит как просто: Результаты, а не Рузультаты.txt ?

Добавлено через 3 минуты
Старый проект (который не хочет работать) выложите, я у себя попробую.
0
Alex_Skripa
18 / 18 / 1
Регистрация: 16.09.2013
Сообщений: 126
27.10.2013, 19:09  [ТС] #19
так он ничем не отличается, от последнего все один в один просто копи паст в новый проект...
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
#include "stdafx.h"
#include <iostream>
#include <string>
#include <string.h>
#include <math.h>
#include <fstream>
#include <windows.h>
using namespace std;
 
void words()
{
    ofstream f1;
    ifstream f;
    string word,check;
    int i,j,k;
    bool *pos;
    cout <<"\nВведите ключевое слово\n";
    cin >>word;
    pos=new bool [word.length()];
    f1.open("D:\\Результаты.txt");
    f1 <<"Ваше ключевое слово-------->"<<word;
    f1 <<"\nСоставленные слова:";
    f1.close();
    f.open("D:\\словарь.txt",ios::in);
    if (f)
    {
        while (!f.eof())
        {
            f >>check;
            if(check.length()<=word.length())
            {
                for(i=0;i<word.length();i++)
                {
                    pos[i]=false;
                }
                k=0;
                for(i=0;i<check.length();i++)
                {
                    for(j=0;j<word.length();j++)
                    {
                        if ((check[i]==word[j])&&(!pos[j]))
                        {
                            k++;
                            pos[j]=true;
                            break;
                         }
                     }
                }
                if (k==check.length())
                {
                    f1.open("D:\\Результаты.txt",ios::app);
                    f1 <<"\n--->"<<check;
                    f1.close();
                }
            }
        }
    }
    else cout <<"\nФайл словарь не найден!!! Для создания запустите обучение...";
f.close();
delete(pos);
}
 
 
void train()
{
    fstream f;
    string word,check;
    bool t;
    do
    {
        label:cout <<"\nДля выхода из обучения введите ""0""";
        t=false;
        cout <<"\nВведите новое слово --> ";cin >>word;
        if (word!="0")
        {
           f.open("D:\\словарь.txt");
           if (f)
           {
               while (!f.eof())
               {
                   f >>check;
                   if (check==word) t=true; 
               }
           }
           else cout <<"\nСоздайте словарь!";
           f.close();
           if (t)
           {
               cout <<"\nДанное слово уже присутствует в словаре!!!Попробуйте другое слово!!!";
               goto label;
           }
           else
           {
               f.open("D:\\словарь.txt",ios::app);
               f <<word<<"\n";
               f.close();
           }
           }
    }
    while(word!="0");
}
 
int main()
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    int mode;
    cout <<"Выберите режим работы программы:";
    cout <<"\nРежим обучения--------------------->0";
    cout <<"\nРежим составления слов-------->Другое\n";
    cin >>mode;
    if (mode==0) train();
    else    words();
    getchar();
    getchar();
    return 0;
}
один в один., малость подправлен, а так первый пост там первоначальный текст, я у себя его с психу снес уже, подправлено там следующее 78 строка в проверке я к переменной t обращаюсь без указания индекса там нужно
C++
1
if (check[i]==word[j])&&(!t[j])
вот остальное все то же.
Да и еще я поменял местами функции, но вы можете с первого поста взять первоначальный код и заюзать у себя, и я думаю он будет работать, а по какой причине он мне 3 дня голову шатал я не понимаю до сих пор, и наверно не пойму никогда)
1
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.10.2013, 19:20 #20
Не текст кода, а весь проект (папку).
0
Alex_Skripa
18 / 18 / 1
Регистрация: 16.09.2013
Сообщений: 126
27.10.2013, 22:21  [ТС] #21
Спасибо за помощь, прога работает) проект выложить не могу первоначальный так как снес его, вопрос конечно остался открытым, но я это скидываю на капризы компилятора...
0
2ima
☆ Форумчанин(FSC)☆
910 / 289 / 9
Регистрация: 28.04.2013
Сообщений: 2,381
Записей в блоге: 10
Завершенные тесты: 1
28.10.2013, 14:56 #22
Alex_Skripa, попробуйте кинуть в другую папку и на другой диск
0
Alex_Skripa
18 / 18 / 1
Регистрация: 16.09.2013
Сообщений: 126
28.10.2013, 15:28  [ТС] #23
Цитата Сообщение от FSC Посмотреть сообщение
Alex_Skripa, попробуйте кинуть в другую папку и на другой диск
пробовал только вот я не думаю что в этом проблема комп та мой и права админа есть) не помогало короче...
0
2ima
☆ Форумчанин(FSC)☆
910 / 289 / 9
Регистрация: 28.04.2013
Сообщений: 2,381
Записей в блоге: 10
Завершенные тесты: 1
28.10.2013, 16:10 #24
Тогда удачи!
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2013, 16:10
Привет! Вот еще темы с ответами:

С++ работа с текстовыми файлами - C++
Здравствуйте. Я только начинаю знакомиться с средой C++, учусь работать с файлами, самое базовое типа ввода и вывода данных. Так вот, может...

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

Работа с текстовыми файлами - C++
Подскажите плиз как делать на С++ вот такое вот: Даны два текстовых файла. Добавить в конец каждой строки первого файла соответствующую...

Работа с текстовыми файлами - C++
Люди добрые кто может подскажите)) Задание: Дан текстовый файл, проставить пробелы после знаков препинания &quot;,.?!&quot; если он отсутствует,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.10.2013, 16:10
Ответ Создать тему
Опции темы

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