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

Запись в файл - C++

Восстановить пароль Регистрация
 
al-s
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 8
23.10.2012, 20:14     Запись в файл #1
Программа для действий над комплексными числами, нужно чтобы результат записывался в текстовый файл. Не могу понять как это сделать. Файл создается и даже записывает что я ему даю, но чтобы результат операции записывался. Программа:
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
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
# include <iostream.h>
# include <stdlib.h>
# include <conio.h>
# include <windows.h>
# include <math.h>
# include <fstream.h>
# include <locale.h>
 
using namespace std;
 
struct complex
{
    double a,b;
};
    class Complex
{
    complex comp;
    public:
 
        Complex(double x=0,double y=0)
    {
        comp.a=x;
        comp.b=y;
    }
 
Complex operator +(const Complex &c);
Complex operator *(const Complex &c);
Complex operator -(const Complex &c);
Complex operator /(const Complex &c);
 
const Complex& operator =(const Complex &c)
    {
        comp.a=c.comp.a;
        comp.b=c.comp.b;
        return *this;
    }
    Complex conj();
    Complex Read();
    void Display();
};
Complex Complex::operator +(const Complex &c)
{
    Complex d;
    d.comp.a=comp.a+c.comp.a;
    d.comp.b=comp.b+c.comp.b;
    return d;
}
Complex Complex::operator -(const Complex &c)
{
    Complex y;
    y.comp.a=comp.a-c.comp.a;
    y.comp.b=comp.b-c.comp.b;
    return y;
}
Complex Complex::operator *(const Complex &c)
{
    Complex t;
    t.comp.a=comp.a*c.comp.a-comp.b*c.comp.b;
    t.comp.b=comp.a*c.comp.b+comp.b*c.comp.a;
    return t;
}
Complex Complex::operator /(const Complex &c)
{
    Complex t;
    t.comp.a=(comp.a*c.comp.a+comp.b*c.comp.b)/(comp.a*comp.a+comp.b*comp.b);
    t.comp.b=(comp.b*c.comp.a-comp.a*c.comp.b)/(comp.a*comp.a+comp.b*comp.b);
    return t;
}
Complex Complex::conj()
{
    comp.a=comp.a;
    comp.b=-comp.b;
    return *this;
}
void Complex::Display()
{
    if(comp.b>=0)
    cout<<comp.a<<"+"<<comp.b<<"i\n";
    else
    cout<<comp.a<<comp.b<<"i\n";
}
Complex Complex::Read()
{
    double x,y;
    cout<<"Действителная часть: ";
    cin>>x;
    cout<<"Мнимая часть: ";
    cin>>y;
    Complex A=Complex(x,y);
    return A;
}
//------------------------------------------------------------------------------------------------
void execute()
{
    cout<<" Задание: \n";
    cout<<" Реализовать класс Complex для работы с комплексными числами.\n";
    cout<<" Комплексное число представляются парой действительных чисел (a, b), где\n";
    cout<<" a - действительная часть, b - мнимая часть. \n";
    cout<<" Реализовать операции:\n";
    cout<<" - сложения\n";
    cout<<" - вычитания\n";
    cout<<" - умножения\n";
    cout<<" - деления\n";
    cout<<" - инкремент\n";
    cout<<" - декремент\n";
    cout<<" - запись результата в текстовый файл";
}
int chois()
{
    int chois_1;
    cout << " Операции комплексными числами\n";
    cout << " 1 - Сложение\n";
    cout << " 2 - Вычитание\n ";
    cout << "3 - Умножение\n";
    cout << " 4 - Деление\n";
    cout << " 5 - Инкремент\n";
    cout << " 6 - Декремент\n";
    cout << " 0 - Выход\n\n";
    cout << "\n Выбери действие : \n";
    cin >> chois_1;
    return chois_1;
}
void choise()
{
    switch (chois())
    {
    case 1:
        {
            Complex a,b;
            cout<<"Первое число:\n";
            a=a.Read();
            cout<<"Второе число:\n";
            b=b.Read();
            Complex c=a+b;
            c.Display();
            break;
        }
    case 2:
        {
            Complex a,b;
            cout<<"Первое число:\n";
            a=a.Read();
            cout<<"Второе число:\n";
            b=b.Read();
            Complex c=a-b;
            c.Display();
 
            break;
        }
    case 3 :
        {
            Complex a,b;
            cout<<"Первое число:\n";
            a=a.Read();
            cout<<"Второе число:\n";
            b=b.Read();
            Complex c=a*b;
            c.Display();
            break;
        }
    case 4:
        {
            Complex a,b;
            cout<<"Первое число:\n";
            a=a.Read();
            cout<<"Второе число:\n";
            b=b.Read();
            Complex c=a/b;
            c.Display();
            break;
        }
    case 5:
        {
            Complex a,b;
            cout<<"Первое число:\n";
            a=a.Read();
            Complex c=a+1;
            c.Display();
            break;
        }
    case 6:
        {
            Complex a,b;
            cout<<"Первое число:\n";
            a=a.Read();
            Complex c=a-1;
            c.Display();
            break;
        }
            default :exit(0);
    }
 
    ofstream out("file.txt");
    out << "Запись результата в файл";
    system("pause");
    system("cls");
    choise();
 
}
//----------------------------------------------------------------------------------------------
    int main ()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    execute();
    cout << "\n -----------------------------------------------------------------------------\n";
    choise();
    getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2012, 20:14     Запись в файл
Посмотрите здесь:

C++ запись в файл
запись в файл C++
C++ Запись в файл
C++ Запись в файл
запись в файл. не создается файл C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
24.10.2012, 16:29     Запись в файл #2
al-s, функции Dysplay лучше дать имя Write и передавать её ссылку на объект класса (или подклассов) std::ostream. При этом этот параметр можно сделать параметром по умолчанию с начальным значением std::cout.
al-s
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 8
25.10.2012, 19:02  [ТС]     Запись в файл #3
silent_1991, можно пример как это сделать.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
25.10.2012, 19:05     Запись в файл #4
C++
1
2
3
4
5
6
7
8
9
10
void Write(std::ostream& stream = std::cout)
{
    // ...
}
// ...
instance.Write(); // вывод на экран
// ...
std::ofstream fout("X:\File\Name");
 
instance.Write(fout); // запись в файл
Добавлено через 26 секунд
А, ну и в функции Write заменить все использования cout на stream.
al-s
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 8
25.10.2012, 19:29  [ТС]     Запись в файл #5
В 40 строке программы меняю void Display() на void Write (std::ostream& stream = std::cout)? Сильно не пинайте пытаюсь разобраться с программой.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
25.10.2012, 19:31     Запись в файл #6
al-s, да.

Добавлено через 1 минуту
al-s, а, ну и в 76 тоже. И внутри функции cout на stream замените везде.
al-s
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 8
25.10.2012, 19:51  [ТС]     Запись в файл #7
Да, сейчас меняю.

Добавлено через 18 минут
Выдал 10 ошибок. Может я что то не так сделал?
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
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
# include <iostream.h>
# include <stdlib.h>
# include <conio.h>
# include <windows.h>
# include <math.h>
# include <fstream.h>
# include <locale.h>
 
using namespace std;
 
struct complex
{
    double a,b;
};
    class Complex
{
    complex comp;
    public:
 
        Complex(double x=0,double y=0)
    {
        comp.a=x;
        comp.b=y;
    }
 
Complex operator +(const Complex &c);
Complex operator *(const Complex &c);
Complex operator -(const Complex &c);
Complex operator /(const Complex &c);
 
const Complex& operator =(const Complex &c)
    {
        comp.a=c.comp.a;
        comp.b=c.comp.b;
        return *this;
    }
    Complex conj();
    Complex Read();
    void Write (std::ostream& stream = std::cout);
};
Complex Complex::operator +(const Complex &c)
{
    Complex d;
    d.comp.a=comp.a+c.comp.a;
    d.comp.b=comp.b+c.comp.b;
    return d;
}
Complex Complex::operator -(const Complex &c)
{
    Complex y;
    y.comp.a=comp.a-c.comp.a;
    y.comp.b=comp.b-c.comp.b;
    return y;
}
Complex Complex::operator *(const Complex &c)
{
    Complex t;
    t.comp.a=comp.a*c.comp.a-comp.b*c.comp.b;
    t.comp.b=comp.a*c.comp.b+comp.b*c.comp.a;
    return t;
}
Complex Complex::operator /(const Complex &c)
{
    Complex t;
    t.comp.a=(comp.a*c.comp.a+comp.b*c.comp.b)/(comp.a*comp.a+comp.b*comp.b);
    t.comp.b=(comp.b*c.comp.a-comp.a*c.comp.b)/(comp.a*comp.a+comp.b*comp.b);
    return t;
}
Complex Complex::conj()
{
    comp.a=comp.a;
    comp.b=-comp.b;
    return *this;
}
void Complex::Write ()
{
    if(comp.b>=0)
    stream<<comp.a<<"+"<<comp.b<<"i\n";
    else
    stream<<comp.a<<comp.b<<"i\n";
}
Complex Complex::Read()
{
    double x,y;
    stream<<"Действителная часть: ";
    cin>>x;
    stream<<"Мнимая часть: ";
    cin>>y;
    Complex A=Complex(x,y);
    return A;
}
//------------------------------------------------------------------------------------------------
void execute()
{
    stream<<" Задание: \n";
    stream<<" Реализовать класс Complex для работы с комплексными числами.\n";
    stream<<" Комплексное число представляются парой действительных чисел (a, b), где\n";
    stream<<" a - действительная часть, b - мнимая часть. \n";
    stream<<" Реализовать операции:\n";
    stream<<" - сложения\n";
    stream<<" - вычитания\n";
    stream<<" - умножения\n";
    stream<<" - деления\n";
    stream<<" - инкремент\n";
    stream<<" - декремент\n";
    stream<<" - запись результата в текстовый файл";
}
int chois()
{
    int chois_1;
    stream << " Операции комплексными числами\n";
    stream << " 1 - Сложение\n";
    stream << " 2 - Вычитание\n ";
    stream << "3 - Умножение\n";
    stream << " 4 - Деление\n";
    stream << " 5 - Инкремент\n";
    stream << " 6 - Декремент\n";
    stream << " 0 - Выход\n\n";
    stream << "\n Выбери действие : \n";
    cin >> chois_1;
    return chois_1;
}
void choise()
{
    switch (chois())
    {
    case 1:
        {
            Complex a,b;
            stream<<"Первое число:\n";
            a=a.Read();
            stream<<"Второе число:\n";
            b=b.Read();
            Complex c=a+b;
            instance.Write();
            break;
        }
    case 2:
        {
            Complex a,b;
            stream<<"Первое число:\n";
            a=a.Read();
            stream<<"Второе число:\n";
            b=b.Read();
            Complex c=a-b;
            instance.Write();
 
            break;
        }
    case 3 :
        {
            Complex a,b;
            stream<<"Первое число:\n";
            a=a.Read();
            stream<<"Второе число:\n";
            b=b.Read();
            Complex c=a*b;
            instance.Write();
            break;
        }
    case 4:
        {
            Complex a,b;
            stream<<"Первое число:\n";
            a=a.Read();
            stream<<"Второе число:\n";
            b=b.Read();
            Complex c=a/b;
            instance.Write();
            break;
        }
    case 5:
        {
            Complex a,b;
            stream<<"Первое число:\n";
            a=a.Read();
            Complex c=a+1;
            instance.Write();
            break;
        }
    case 6:
        {
            Complex a,b;
            stream<<"Первое число:\n";
            a=a.Read();
            Complex c=a-1;
            instance.Write();
            break;
        }
            default :exit(0);
    }
    std::ofstream fout("file.txt");
    instance.Write(fout);
    system("pause");
    system("cls");
    choise();
}
//----------------------------------------------------------------------------------------------
    int main ()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    execute();
    stream << "\n -----------------------------------------------------------------------------\n";
    choise();
    getch();
    return 0;
}
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
25.10.2012, 19:53     Запись в файл #8
al-s, 76 строка. Должно быть
C++
1
void Complex::Write(std::ostream& stream)
al-s
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 8
25.10.2012, 20:00  [ТС]     Запись в файл #9
7 ошибок
error: 'stream' indeclared в всех функциях
error: 'instance' indeclared
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
25.10.2012, 20:02     Запись в файл #10
al-s, а при чём тут все? Вы stream должны были использовать только в Write. Вроде же писали код, использовали методы с параметрами...
al-s
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 8
25.10.2012, 20:19  [ТС]     Запись в файл #11
ругается на 135 строку:'instance' indeclared
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
25.10.2012, 20:20     Запись в файл #12
al-s, instance - это было абстрактно. "Instance" переводится "экземпляр". Значит, что этот метод должен вызываться на конкретном объекте класса (в данном случае класса Complex).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2012, 20:34     Запись в файл
Еще ссылки по теме:

C++ запись в файл
запись в файл C++
C++ Запись в файл

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

Или воспользуйтесь поиском по форуму:
al-s
0 / 0 / 0
Регистрация: 06.10.2012
Сообщений: 8
25.10.2012, 20:34  [ТС]     Запись в файл #13
silent_1991, спасибо вам огромное. Взял объект класса Complex - с. И еще вопрос: все действия делает правильно кроме деления, может у меня ошибка.
Yandex
Объявления
25.10.2012, 20:34     Запись в файл
Ответ Создать тему
Опции темы

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