2017-05-10 24 views
-1

コードはありますが、私は解決策を見出そうとしていますが、私が試したことはうまくいきませんでした。また、ファイルが開かれているかどうかをチェックするメインの一番下にあるifステートメントは失敗し、ファイルを開くことができないと言われますが、そのエラーの処理方法はわかりません。あなたは[7]の行は、あなたがグリッド[5] [i]は= T3をしたいと思うチームメイト持っていけないofstreamはファイルを作成しますが書きません

#include <iostream> 
#include <fstream> 
#include <iomanip> 
using namespace std; 
const int row = 6; 
const int col = 8; 
void cellTemp (double check[][col], double); 
int main() 
{ 
    ifstream in; 
    string input; 
    ofstream out; 
    string output; 
    double grid[row][col]; 
    double t1, t2, t3, t4, tol; 

    cout << "Enter input file name: \n"; 
    cin >> input; 
    cout << "Enter output file name: \n"; 
    cin >> output; 

    in.open(input.c_str()); 
    out.open(output.c_str()); 

    in >> t1 >> t2 >> t3 >> t4 >> tol; 


    for(int i = 0; i < 6; i++) 
    { 
     for(int c = 0; c < 8; c++) 
     { 
      grid[i][c] = 0; 
     } 
    } 

    // Initializes top and bottom rows to 0 
    for(int i = 0; i < 8; i++) 
    { 
     grid[0][i] = t1; 
     grid[7][i] = t3; 
    } 
    // Initializes left and right columns to 0 
    for(int i = 1; i < 5; i++) 
    { 
     grid[i][0] = t4; 
     grid[i][7] = t2; 
    } 

    cellTemp(grid, tol); 
    if(out.is_open()) 
    { 
     for(int i = 0; i < 6; i++) 
     { 
      for(int c = 0; c < 8; c++) 
      { 
       out << grid[i][c]; 
      } 
      out << endl; 
     } 
     out.flush(); 
    } 
    else 
    { 
     cout << "Cannot open file. \n"; 
    } 
    out.close(); 
    in.close(); 
} 
void cellTemp (double check[][col], double tolerance){ 

    double copy[row][col]; 
    double max = 0; 
    double prev = 0; 
    double prevMax; 
    double prevTol = tolerance; 

    tolerance = -1; 
    while(prevMax > tolerance) 
    { 
     tolerance = prevTol; 
     // Copies the array before performing actions 
     for(int i = 0; i < 6; i++) 
     { 
      for(int c = 0; c < 8; c++) 
      { 
       copy[i][c] = check[i][c]; 
      } 
     } 

     // Sets cell values 
     for(int i = 1; i < 5; i++) 
     { 
      for(int c = 1; c < 7; c++) 
      { 
       check[i][c] = (check[i-1][c] + check[i+1][c] + 
         check[i][c-1] + check[i][c+1])/4; 
      } 
     } 

     for(int i = 1; i < 5; i++) 
     { 
      for(int c = 1; c < 7; c++) 
      { 
       prev = check[i][c] - copy[i][c]; 
       if(prev > max) 
       { 
        max = prev; 
       } 
      } 
     } 
     prevMax = max; 
     max = 0; 
    } 
} 
+0

あなたは境界から外れています: 'grid [7] [i] = t3;'。 – Shibli

+0

pathとtestでファイル名をハードコーディングして、同じ問題が発生していないかどうかを確認してください。 – dmaelect

+0

それはあなたのタイトルが言うように、ファイルがオープン/作成されるかどうか、あなたの質問が言う通りですか?出力ファイルをどこに置こうとしていますか? –

答えて

0
grid[7][i] = t3; 

。 ?

+0

ポールありがとう、それは働いた! – dshin

+0

問題なし –

関連する問題