将符号分配给二维数组中的数字

问题描述:

我正在研究C++中应该读取文件的程序,将文件的内容存储到二维数组中,将字符分配给数组中的每个数字并存储在char数组中,并打印这两个数组。然后它应该通过初始数组并确保每个数字的值与其相邻数字的值相差不超过1,通过将这些数字替换为其邻居的平均值来更正这些错误,将字符分配给这个正确的数组就像以前一样,并打印两个数组。将符号分配给二维数组中的数字

字符分配去如下:

0=blank 
1=. 
2=, 
3=_ 
4=! 
5=+ 
6=* 
7=# 
8=$ 
9=& 

我写的代码,打开该文件并加载数组,但我不知道从哪里里去。对我来说,明显的,尽管可能不是最好的做法是使用for循环遍历数组,并使用一系列if语句来检查每个索引处的数字值并分配相应的符号。我相信有更好的方法来实现这一点。

这里是我的代码至今:

#include <iostream> 
#include <fstream> 
using namespace std; 

int main() { 
ifstream prog; 
prog.open("../prog1.dat"); 

    //If file can't be opened, exit 
    if (!prog) { 
     cerr << "File could not be opened" << endl; 
     exit(EXIT_FAILURE); 
    } 
    else { 
     while (!prog.eof()) { 
      int size = 100, i, j; 
      prog >> size; 
      int **numArray = new int* [size]; 
       for(i = 0; i < size; i++) { 
        numArray[i] = new int[size]; 
        for(j = 0; j < size; j++) { 
         prog >> numArray[i][j]; 
        } 
        cout << endl; 
       } 

       for(i = 0; i < size; i++) { 
        for(j = 0; j < size; j++) { 
         cout <<numArray[i][j] << " "; 
        } 
         cout << endl; 
       } 
     prog.close(); 
     return 0; 
     } 
    } 
} 

我非常新的这个编程语言,其实这是我的第一个程序我在C++做,我从字面上学习,我走。任何建议将不胜感激。

+0

好吧,作为你的第一个程序,你会发现现在更好,而不是更晚。这样做:'while(!prog.eof())'[**几乎总是错误的**](http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition -considered-错误的)。 *验证你的输入*。只要你学习动态分配的工作方式,学习如果在现代C++中正确利用标准库,你很少需要它。 [**阅读此**](http://klmr.me/slides/modern-cpp/#1) – WhozCraig 2014-09-11 11:24:43

在这段代码中你没有检查与邻居的区别。另外它们不需要2个嵌套for循环,这是一个非常大的开销。你可以在第一个嵌套for循环中打印numArray。

根据你这是你的第一个编程任务,你已经使用双指针和嵌套循环,也检查文件的方式是否打开。你确定这是你的第一个作业吗?

+0

这里的一切都是我阅读过的教科书或不同的在线教程,或从我的提示从其他人那里得到。这绝对是我的第一个节目。通过第一次编程分配,我的意思是在C++中,我在Java和Visual Basic中采用了几个类。 – 2014-09-11 10:23:47