クラスのファイル読み込みでエラーが起こっており困ってます。F1から実数値を受取り、F2から自然数を受け取ります。ターミナルからXを実数値入力し、Ci = (-1)^i * Ai * X^Bi のCを要素ごとにF3に出力し、ターミナルにCの合計値を出力します。お助けいただけると幸いです。
c++
1#include <bits/stdc++.h> 2#include <fstream> 3using namespace std; 4#define _GLIBCXX_DEBUG 5#define rep(i,n) for(int i=0; i<(n); i++) 6#define all(n) begin(n),end(n) 7using ll = long long; 8using P = pair<int,int>; 9 10stack<double> a; 11stack<int> b; 12 13int X; 14class num 15{ 16 vector<int> c;//dynamic memory 17public: 18 num(istream& finA, istream& finB); 19 void calculate(); 20 void print(ostream& fout); 21}; 22 23num::num(istream& finA, istream& finB){ 24 if(finA.fail()||finB.fail()){ 25 cout << "cannot read file" << endl; 26 exit(1); 27 } 28 29 //input A 30 int A; 31 while((finA >> A) != 0){ 32 a.push(A); 33 } 34 //input B 35 int B; 36 while((finB >> B) != 0){ 37 a.push(B); 38 } 39 40}; 41 void num::calculate(){ 42 43 cout << "insert real number" << endl; 44 int n = max(a.size(), b.size()); 45 rep(i,n){ 46 int z; 47 int A = a.top(); 48 a.pop(); 49 int B = b.top(); 50 b.pop(); 51 if(i%2==0) z = -1; 52 else z = 1; 53 double y = z*A*pow(X, B); 54 c.push_back(y); 55 } 56 } 57 void num::print(ostream& fout){ 58 double sum = 0; 59 rep(i,c.size()){ 60 fout << c[i] << endl; 61 sum+=c[i]; 62 } 63 cout << sum << endl; 64 } 65 66 67int main(){ 68 cin >> X; 69 ifstream finA("F1.txt"); 70 ifstream finB("F2.txt"); 71 ofstream fout("F3.txt"); 72 num hoge(finA, finB); 73 hoge.calculate(); 74 hoge.print(cout); 75 return 0; 76} 77 78
F1.txt
1
20
22
2.23
1.01
F2.txt
2
3
4
5
6
回答2件
あなたの回答
tips
プレビュー