Red de conocimiento informático - Conocimiento del nombre de dominio - 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

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

#include "stdio.h"

#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;

}

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>}