将符号指定给二维阵列中的数字

Assigning Symbols to Numbers in a 2D Array

本文关键字:二维 阵列 数字 符号      更新时间:2023-10-16

我正在用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++编写的第一个程序,我正在边学习边学习。如有任何建议,我们将不胜感激。

在这段代码中,您没有检查与neighbor的差异。此外,它们不需要2个嵌套的for循环,这是一个非常大的开销。您可以在第一个嵌套的for循环中打印numArray。

根据你的说法,这是你的第一次编程任务,你已经在使用双指针和嵌套循环,以及你检查文件是否打开的方式。你确定这是你的第一次任务吗