gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 02:24:09 25 4
gpt4 key购买 nike

我需要我的程序从 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com