Se necesita con urgencia el código fuente del operador de matriz dispersa (versión en lenguaje C)... se puede ejecutar... para el diseño del curso
#define MAXSIZE 100 //número de valores distintos de ceros 100
#define MAXROW 20 //max filas 20
#define MAXCOL 20 //max columnas 20
typedef struct
{
int data[MAXSIZE 1][3] // Una tabla ternaria que contiene elementos distintos de cero; , datos[0] no utilizados
int m, n, len;
}smat;
void matadd(smat A, smat B, smat C)
{ //Suma de matriz dispersa
int i=1, j=1, k=1, a[20][20];
while( ilt;=A.A.data[i][0]gt;B.data[j][0]||igt;A.len) //cuando el número de línea actual de A es mayor que el número de línea de B, entonces el El número de línea más pequeño B se agrega a C
{
C.data[k][0]=B.data[j][0];
C.len) //cuando el número de línea actual de A es menor que el número de línea de B, entonces el número de línea más pequeño A se agrega a C
p> {
C .data[k][0]=A.data[i][0];
C.data[k][1]=A.data[i][1];
C.data[k][2]=A.data[i][2];
k ;
}
más //I si; El número de fila actual de A es igual al número de fila actual de B, compare los números de columna para depositar el elemento de columna más pequeño en C. Si el número de fila actual de A es igual al número de fila actual de B, compare los números de columna para depositar el elemento de columna más pequeño en C. DO.
Si son iguales, agréguelos y guárdelos en C
{
if(A.data[i][1]gt; B.data[j][1] )
{
C.data[k][0]=B.data[j][0] B.data[j][1])
printf("Ingrese el valor del elemento dth distinto de cero: ", i
scanf ("d", amp; b[i][3]);
}
Initsmat(B);
for(i=1,k=1;ilt;=B.len,klt;=B .len;i, k )
{
B.datos[k][0]=b[i][1];
if(B.datos[k] [ 0]gt;20||B.data[k][0]lt;1||B.mgt;20||B.mlt;1)
{
printf ("\n");
printf("El número de fila que ingresó está fuera de rango; vuelva a ingresar la información para la segunda matriz B ternaria:\n");
ir a bucle2;
}
B.data[k][1]=b[i][2];
if(B.data[ k ][1]gt;20||B.data[k][1]lt;1||B.ngt;20||B.nlt;1)
{
printf("\n");
printf("El número de columna que ingresó está fuera de rango; vuelva a ingresar la información para la segunda matriz B ternaria:\n");
llegó al bucle2;
}
B.data[k][2]=b[i][3]; datos[k][2]gt;32767||B.data[k][2]lt;-32768)
{
printf("\n"); /p>
printf("El valor del elemento distinto de cero que ingresó está fuera de rango, vuelva a ingresar la información para la segunda matriz B triple:\n"); bucle2;
}
}
}
printf("\n"); "Los triples de la matriz B son:\n");
printf(" ===================\n");
p>
printf("número de línea y número de columna valor/n");
printf(" ------------------ -\n" );
k=1;
B.data[0][2]=B.len;
f
o(k=1;klt;=B.len;k)
{
printf("\t4d4d4d4d\n",B.data[k][0],B .data[k][1], B.data[k][2]);
}
printf(" ============ ======\n");
geto loop3;
loop3:
printf("\n");
printf("1. Para sumar dos matrices, seleccione.\n");
printf("2. Para restar dos matrices, seleccione.\n"); p> printf("3. Seleccione las dos matrices restantes.\n");
scanf("d", amp; e
if(e= =1); )
{
if(A.m!=B.m||A.n!=B.n)
{
printf("Los dos ternarios los conjuntos que ingresó no coinciden con la suma de la matriz, seleccione nuevamente: \ n");
goto loop3;
}
matadd(A, B, C
ir a bucle3
}
si(e==2)
{
if(A.m!m!=B.m||A.n!=B.n )
{
printf("Los dos triples que ingresó no coinciden con la resta de matrices, vuelva a seleccionar :\ n");
ir a loop3;
}
matsub(A, B, C);
ir a loop3; p>
}
else if(e==3)
{
if(A.n!=B.m)
{
printf("Los dos triples que ingresó no coinciden con la multiplicación de la matriz, vuelva a seleccionar:\n");
Saltar al bucle3; >
}
matmul(A, B, C);
Saltar al bucle3
}
else if( e==4)
{
Saltar al bucle1;
}
else if(e==0)
{
devolver 0
p> }
más
{
printf( "La selección que ingresó no es válida, vuelva a seleccionar:\n");
Volver al bucle3
}
Devuelve 0; p>}