将符号分配给2D数组中的数字

时间:2014-09-11 10:00:59

标签: c++ arrays

我正在开发一个C ++程序,该程序应该读入文件,将文件内容存储到2D数组中,为数组中的每个数字分配字符并存储在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 ++完成的第一个程序,我实际上是在学习。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

根据你的说法,这是你的第一个编程任务,你已经在使用双指针和嵌套循环,以及你打开或不打开文件的方式。你确定这是你的第一份作业