17.01.2014, 18:57. Просмотров 827. Ответов 3
Доброго времени суток всем! Прошу помощи! Написал программу, есть пару моментов, сложных для меня.
Необходимо написать две функции, одну из которых я уже написал, но кое-чего не хватает (см. ниже)
1.void WriteComplex(char * fname, Complex * buffer, int count);
–
функция записывает count элементов типа Complex из массива
buffer в файл с именем fname; - это я реализовал, единственное не могу понять как передать в функцию указатель на имя файла(char * fname)
2. int ReadComplex(char * fname, Complex * buffer, int count);
– функция читает count элементов типа Complex из файла с именем fname в массив buffer и возвращает количество фактически прочитанных элементов.
Если можно, с примером, или может есть программа с аналогичными функциями.
Вот мой код:
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
| #include<iostream>
#include<conio.h>
#include <iomanip>
#include <math.h>
#include <fstream>
using namespace std;
struct Complex // структура комплексных чисел
{
double re;
double im;
};
Complex Add(Complex c1, Complex c2);
Complex Sub(Complex c1, Complex c2);
Complex Mul(Complex c1, Complex c2);
Complex Div(Complex c1, Complex c2);
void ex(Complex resAdd);
void ex1(Complex resSub);
void ex2(Complex resMul);
void ex3(Complex resMul);
void print_Complex(Complex resAdd){
cout<<"Komplexnoe chislo v algebraicheskoy forme: "<<resAdd.re<<"+"<<resAdd.im<<"i"<<endl;
double F, Z;
F= atan(resAdd.im/resAdd.re);
Z = sqrt( resAdd.re*resAdd.re+ resAdd.im*resAdd.im);
cout<<"Komplexnoe chislo v pokazatelnoy forme: Cp= "<<Z<<"*e^i"<<F<<endl;
};
const int size =4; //размер массива
void WriteComplex(Complex* pbuf, int count)/////////////////////////////////
{
ofstream fout;
fout.open("C:\\C++fails\\1.txt");
for(int t=0; t<count;t++){
int c;
fout<<c<<". "<<"re = "<< pbuf ->re <<", im = " << pbuf ->im << endl;
++pbuf;
c++;
}
fout.close();
}
int main()
{
Complex c1;
Complex c2;
Complex c3;
c3.re=5;
c3.im=9;
Complex c4={8.7,9.3};
Complex res;
Complex buf[size];
Complex*pbuf=buf;
cout << "Vvedite deystvitelnuyu chast kompleksnogo chisla c1: " << endl;
cin>>c1.re;
cout << "Vvedite mnimuyu chast kompleksnogo chisla c1: " << endl;
cin>>c1.im;
cout << "Vvedite deystvitelnuyu chast kompleksnogo chisla c2: " << endl;
cin>>c2.re;
cout << "Vvedite mnimuyu chast kompleksnogo chisla c2: " << endl;
cin>>c2.im;
cout<<endl<<endl;
cout<<setw(60)<<"******************Menu********************"<<endl;
cout<<"Viberite punkt menu: "<<endl;
cout<<"1. Slogenie komplexnih chisel. "<<endl;
cout<<"2. Vichitanie komplexnih chisel."<<endl;
cout<<"3. Umnogenie komplexnih chisel."<<endl;
cout<<"4. Delenie komplexnih chisel."<<endl<<endl<<endl;
pbuf->re=c1.re;
pbuf->im=c1.im;
pbuf++;
pbuf->re=c2.re;
pbuf->im=c2.im;
pbuf++;
pbuf->re=c3.re;
pbuf->im=c3.im;
pbuf++;
pbuf->re=c4.re;
pbuf->im=c4.im;
WriteComplex(buf,4);////////////////////////////////////////
int e;
cin>>e;
cout<<endl;
switch(e)
{
case 1:
Add( c1, c2);
Complex resAdd;
ex(resAdd);
print_Complex(resAdd);
break;
case 2:
Sub(c1, c2);
Complex resSub;
ex1(resSub);
break;
case 3:
Mul(c1, c2);
Complex resMul;
ex2(resMul);
break;
case 4:
Div(c1, c2);
Complex resDiv;
ex3(resDiv);
break;
default: cout<<"Takogo punkta v menu net!!!";
}
getch();
return 0;
}
Complex Add(Complex c1, Complex c2)
{
Complex resAdd;
resAdd.re= c1.re+c2.re;
resAdd.im= c1.im+c2.im;
return resAdd;
}
void ex(Complex resAdd)
{
cout<<"c1+c2= "<<resAdd.re<<" + "<<resAdd.im<<"i"<<endl<<endl;
}
Complex Sub(Complex c1, Complex c2)
{
Complex resSub;
resSub.re= c1.re-c2.re;
resSub.im= c1.im-c2.im;
return resSub;
}
void ex1(Complex resSub)
{
cout<<"c1-c2= "<<resSub.re<<" + "<<resSub.im<<"i"<<endl<<endl;
}
Complex Mul(Complex c1, Complex c2)
{
Complex resMul;
resMul.re= c1.re*c2.re;
resMul.im= c1.im*c2.im;
return resMul;
}
void ex2(Complex resMul)
{
cout<<"с1*с2= "<<resMul.re<<" + "<<resMul.im<<"i"<<endl;
}
Complex Div(Complex c1, Complex c2)
{
Complex resDiv;
resDiv.re= c1.re/c2.re;
resDiv.im= c1.im/c2.im;
return resDiv;
}
void ex3(Complex resDiv)
{
cout<<"с1\с2= "<<resDiv.re<<" + "<<resDiv.im<<"i"<<endl;
} |
|