2017-05-10 2 views
-1

Voici le code, j'essaie de chercher des solutions mais les choses que j'ai essayées n'ont pas fonctionné. En outre, l'instruction if au bas de la main qui vérifie si le fichier est ouvert, échoue et dit qu'il ne peut pas ouvrir le fichier, mais je ne sais pas quoi faire avec cette erreur.ofstream crée un fichier mais n'écrit pas

#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

Vous êtes hors limite: 'grid [7] [i] = t3;'. – Shibli

+0

Essayez de coder en dur le nom du fichier avec path et de tester si vous rencontrez les mêmes problèmes. – dmaelect

+0

De quoi s'agit-il, le fichier est ouvert/créé comme votre titre l'indique, ou non selon votre question? Où essayez-vous de mettre le fichier de sortie? –

Répondre

0
grid[7][i] = t3; 

vous n'avez pas [7] lignes apparier pensez que vous voulez grille [5] [i] = t3; ?

+0

Merci Paul, ça a marché! – dshin

+0

Pas de problème dshin –