c++ - 我的程序只读取半个数组 c++

标签 c++ arrays file

我需要我的程序从 txt 中读取一个数组。文件,显然是这样,但是当我注意数字时,我发现只有一半数组是正确的,其余的都是随机的。 此外,如果我读取 2 个不同的数组,则随机数是相同的。

有代码:

    //List of Biblio. 
#include <cstdlib>
#include<stdio.h>
#include <time.h>
#include <iostream>
#include <vector>


using namespace std;


FILE *fp;

//Functiotns declaration.

//
void dimensions(int &,int &,int &);
//


void rTime (int** ,int,int,int &); // The first int, it's an Array! 
//
void rTimeprint (int** ,int,int,int);
//



void spt (int**,vector<int> & ,int,int); // The first int it's an Array!
//
int block (int, int,int, int,int,int);
//
int neh (int,int,int,int,int,int,int);
//
static int swap (int, int,int,int,int,int,int,int,double,double,float);
//
//A inserta, hi ha una matriu (1st int) i vector (3rd int)
static int inserta (int,int,int,int,int,int,int,int, double,double,float );
//
static int sa (double,double,float);



  //Array varaibles;
  int column, row, nombreProblemes; 


int main() { 

// Open the file where's the array;

fp = fopen("entrada.txt", "r");


dimensions(column, row, nombreProblemes);            

// Create the Array:

int *matriuTemps[column];

for (int i= 0; i<column;i++){
     matriuTemps[i] = new int [row];
}//end of loop Array[][] creator




// Function read time (array)

rTime(matriuTemps, column, row,problema);

//Function print the Array
rTimePrint(matriuTemps, column,row,problema);


}//End of main

还有函数 rTime:

void rTime(int *matriuTemps [],int column, int row, int &Problema){

  fscanf(fp, "%d",&Problema);

   for (int i= 0; i<row; i++){//Outter loop (row)

       for (int j=0; j<column;j++){//inner loop (column))

           matriuTemps[i][j]=0;

           fscanf(fp,"%d",&matriuTemps [i][j]);

          }//inner loop         
   }//outer loop

如果它对你来说更重要,我把打印数组的函数放在:

void rTimeprint (int *matriuTemps[20] ,int column,int row,int problema){

cout<<"\nAquest és la matriu de temps del problema: "<< problema <<endl<<endl;

for (int i= 0; i<row; i++){//Outter loop (row)

   for (int j=0; j<column;j++){//inner loop (column))

       cout<< matriuTemps[i][j]<<"\t";

   }//inner loop
   cout << endl; 

  }//outer loop
}

最后是输出:(我用 x x 标记,这里的列值开始是随机的,从那里到右边都是随机的) 第一个数组

                                 x
                                 x
54  83  15  71  77  36  53  38  27  87  76  91  14  29  12  77  32  87  68  94  
79  3   11  99  56  70  99  60  16  89  49  15  89  45  60  23  66  58  31  68  
16  89  49  15  89  45  60  23  66  58  31  68  78  91  13  59  58  56  20  85  
66  58  31  68  78  91  13  59  58  56  20  85  53  35  53  41  69  13  86  72  
58  56  20  85  53  35  53  41  69  13  86  72  8   49  47  87  58  18  68  28  

第二个数组:

                                     x
                                     x   
    0   0   0   0   0   0    0   0   0  87  76  91  14  29  12   77 32  87  68  94  
    45  33  11  99  56  0   87  60  16  89  49  15  89  45  60  23  66  58  31  68  
    12  89  40  15  89  45  60  23  66  58  31  68  78  91  13  59  58  56  20  85  
    46  57  1   68  78  95  78  53  58  56  20  85  53  35  53  41  15  13  86  72  
    52  56  20  95  3   15  78  42  15  13  86  72  8   49  47  87  58  18  68  28  

最佳答案

您似乎混淆了维度 - 这部分:

int *matriuTemps[column];

for (int i= 0; i<column;i++){
     matriuTemps[i] = new int [row];
}

应该是:

int *matriuTemps[row];           // allocate `row` rows

for (int i= 0; i<row;i++){       // for each row
     matriuTemps[i] = new int [column];
}                                // allocate `column` elements

关于c++ - 我的程序只读取半个数组 c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31312528/

相关文章:

c++ - pthread_cond_signal() 未在范围内声明

iphone - 使用 OpenAL 连接 2 个音频源

c++ - 为什么我的读取函数在第二次调用时会丢弃第一个字符?

c# - 在c#中获取任意类型数组的函数

java - 如何将 int[] 包装到一个对象中并实现 equals()?

c - fread 不写入 ptr

java - 如何读取文件 : Properties > Details > Content > Pages e. g。对于word文档

c++ - 从 C++ 中的类通过引用访问变量

php - 通过链接打开文件

更改字符串的大小写