Red de conocimiento informático - Consumibles informáticos - Quiero que los expertos resuelvan una pregunta de programación en C con puntuaciones altas. Esta pregunta es realmente difícil para mí.

Quiero que los expertos resuelvan una pregunta de programación en C con puntuaciones altas. Esta pregunta es realmente difícil para mí.

Compruebe si este programa funciona

Clase de números aleatorios: random.h

#include lt; math.hgt;

#include lt;time.hgt;

#define IM1 2147483563

#define IM2 2147483399

#define AM (1.0/IM1)

#definir IMM1 (IM1-1)

#definir IA1 40014

#definir IA2 40692

#definir IQ1 53668

#definir IQ2 52774

#define IR1 12211

#define IR2 3791

#define NTAB 32

#define NDIV (1 IMM1 /NTAB )

#define EPS 1.2e-7

#define RNMX (1.0-EPS)

unsigned int seed=0 //seed es la semilla, para establecerse como una variable global

void mysrand(long int i) //Semilla de inicialización

{

seed = -i; p >}

largo a[1];

clase myrandom

{

público:

doble ran1 (long *idum)

{

int j;

long k

static long idum2=123456789; >

static long iy=0;

static long iv[NTAB];

float temp;

if (*idum lt; = 0)

{

if (-(*idum) lt; 1) *idum=1;

else *idum = -(*idum); p >

idum2=(*idum);

for (j=NTAB 7; jgt; =0; j--)

{

k =(*idum)/IQ1;

*idum=IA1*(*idum-k*IQ1)-k*IR1;

if (*idum lt; 0) * idum = IM1;

if (j lt; NTAB) iv[j] = *idum;

}

iy=iv[0];

}

k=(*idum)/IQ1

*idum=IA1*(*idum-k*IQ1)-k*IR1; >

if (*idum lt; 0) *idum = IM1;

k=idum2/IQ2

idum2=IA2*(idum2-k*IQ2)-k; * IR2;

si

(idum2 lt; 0) idum2 = IM2;

j=iy/NDIV

iy=iv[j]-idum2

iv[j] = *idum;

if (iy lt; 1) iy = IMM1;

if ((temp=AM*iy) gt; RNMX) return RNMX; p> else return temp;

}

};

Clase de matriz: Matrix.h

#include stdio.hgt; ;

#include lt;iostream.hgt;

#include lt;vectorgt

#include "random.h"

usando el espacio de nombres std;

matriz de clases

{

público:

outmatrix()

{

p>

int c=2, d=2, m=0, n=1 // La matriz predeterminada es una distribución uniforme entre dos filas y dos columnas (0, 1)<; /p>

mysrand(time(0)); //Inicialización

a[0]=seed; //Inicialización, nota: no estoy usando la función de números aleatorios que viene con C, pero es una función autoescrita, estas dos líneas son la inicialización de números aleatorios, la posición y el número no se pueden cambiar, la variable "a" solo se puede usar para números aleatorios, ¡¡¡no puedes usarla!!!

myrandom ran;

int panduan=0;

coutlt;lt;"Si utiliza el número predeterminado de filas y columnas, presione 0; de lo contrario, presione 1"lt ;lt;endl;

cingt;gt; panduan;

if(panduan==1)

{

coutlt;lt ;"Ingrese el número de filas y columnas en la matriz"lt;lt;endl;

p>

gt; gt;

vectorlt; vectorlt; doublet; gt; tdmatrix(d, vectorlt; doublet; (c)) //Definir una matriz dinámica bidimensional

panduan=0;

for(int i=0;ilt;d;i)//Ingrese el rango distribuido uniformemente de cada columna

{

coutlt;lt;"Presione 0 para utilizar el valor predeterminado para una distribución uniforme; de ​​lo contrario, presione 1"lt;lt;endl;

cingt;gt; panduan;

if(panduan==1)

{

coutlt;lt;"Ingrese "lt;lt;i 1lt;lt;" Los límites izquierdo y derecho de la distribución promedio de la columna"lt;lt;endl;

cingt;gt;mgt;gt;n;

}

for(int j= 0; jlt; c; j )

{

tdmatrix[i][j]=m ran.ran1(a)*(n-m);

}

panduan=0;

}

// coutlt;

lt;"estoy aquí"lt;lt;endl;

panduan=0;

//

coutlt;lt;"Si se guarda en la carpeta predeterminada Por favor presione 0, de lo contrario presione 1"lt;lt;endl;

cingt;gt;panduan;

if (panduan==0)

{

char str[]="d:\\matrix.txt";

freopen(str, "w", stdout);

}< / p>

else if(panduan==1)

{

char str[100];

coutlt;lt;"Ingrese para guardar Ruta y nombre de archivo, como por ejemplo: d:\\\\"lt;lt;"matrix.txt"lt;lt;endl;

cingt;gt;str;

freopen (cadena, "w", salida estándar);

}

vectorlt; doblete; tdmatrix1(c, vectorlt; doblete; (d)); >

para(i=0;ilt;c;i)

{

para(int j=0;jlt;d;j)

{

tdmatrix1[i][j]=tdmatrix[j][i];

coutlt;lt;tdmatrix1[i][j]lt;lt;" ";

}

coutlt;lt;endl;

}

}

};

Programa de prueba:

#include "matrix.h"

void main()

{

matrix ma;

p>

ma.outmatrix();

}

El programa correspondiente ha sido enviado a tu correo electrónico, compruébalo

Mi correo electrónico: hu_hu605@163.com