Matrices
Matrices
{
#include <stdio.h>
for(j=0;j<N;j++)
# define N 3
{
int A[N][N],B[N][N],I[N][N],r1[N][N],r2[N][N],r3[N][N],MR[N][N];
for(k=0;k<N;k++)
int main (void)
{
{
r1[i][j] += (A[i][k]*A[k][j]);
int i,j,k;
}
int c1 = 0;
}
int c2 = 1;
}
//M A//
//r2//
printf("Matriz A:\n");
for(i=0;i<N;i++)
for(i=0;i<N;i++)
{
{
for(j=0;j<N;j++)
for(j=0;j<N;j++)
{
{
r2[i][j] += (2*B[i][j]);
A[i][j] += c1++;
}
printf("%d ",A[i][j]);
}
}
//r3//
printf("\n");
for(i=0;i<N;i++)
}
{
//M B//
for(j=0;j<N;j++)
printf("Matriz B:\n");
{
for(i=0;i<N;i++)
for(k=0;k<N;k++)
{
{
for(j=0;j<N;j++)
r3[i][j] += (I[i][k]*A[k][j]);
{
}
B[i][j] = 2*A[i][j];
}
printf("%d ", B[i][j]);
}
}
//MR//
printf("\n");
printf("Matriz MR\n");
}
for(i=0;i<N;i++)
//M I//
{
printf("Matriz I:\n");
for(j=0;j<N;j++)
for(i=0;i<N;i++)
{
{
{
for(j=0;j<N;j++)
MR[i][j] += r1[i][j]-r2[i][j]-r3[i][j];
{
}
if (i==j)
}
{
}
I[i][j]=1;
for(i=0;i<N;i++)
}
{
else
for(j=0;j<N;j++)
{
{
I[i][j]=0;
printf("%d ",MR[i][j]);
}
}
}
printf("\n");
}
}
for(i=0;i<N;i++)
//sum
{
int sumd = 0;
for(j=0;j<N;j++)
for(i=0;i<N;i++)
{
{
printf("%d ",I[i][j]);
for(j=0;j<N;j++)
}
{
printf("\n");
if (i==j)
}
{
//r1//
sumd += MR[i][j];
} for(j=0;j<N;j++)
} {
} if (i==j)
printf ("suma diagona: %d",sumd); {
return 0; I[i][j]=1;
} }
else
{
I[i][j]=0;
}
}
}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%d ",I[i][j]);
}
printf("\n");
}
printf("Matriz A*A:\n");
#include <stdio.h> //M A*A//
# define N 3 for(i=0;i<N;i++)
int A[N][N],B[N][N],I[N][N],r1[N][N],r2[N][N],r3[N][N],MR[N][N]; {
int main (void) for(j=0;j<N;j++)
{ {
int i,j,k; for(k=0;k<N;k++)
int c1 = 0; {
int c2 = 1; r1[i][j] += (A[i][k]*A[k][j]);
//M A// }
printf("Matriz A:\n"); }
for(i=0;i<N;i++) }
{ for(i=0;i<N;i++)
for(j=0;j<N;j++) {
{ for(j=0;j<N;j++)
if (i==j) {
{ printf("%d ",r1[i][j]);
A[i][j]=0; }
} printf("\n");
else }
{ //r2//
A[i][j]=1; printf("Matriz resultante\n");
} for(i=0;i<N;i++)
} {
} for(j=0;j<N;j++)
for(i=0;i<N;i++) {
{ r2[i][j] += (r1[i][j]-(2*I[i][j])-A[i][j]);
for(j=0;j<N;j++) }
{ }
printf("%d ",A[i][j]); for(i=0;i<N;i++)
} {
printf("\n"); for(j=0;j<N;j++)
} {
//M I// printf("%d ",r2[i][j]);
printf("Matriz I:\n"); }
for(i=0;i<N;i++) printf("\n");
{ }
return 0; else
} {
I[i][j]=0;
}
}
}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%d ",I[i][j]);
}
printf("\n");
}
#include <stdio.h> //A+B//
# define N 3 printf("Matriz A+B\n");
int for(i=0;i<N;i++)
A[N][N],B[N][N],I[N][N],r1[N][N],r2[N][N],r3[N][N],r4[N][N],r5[N][ {
N],r6[N][N],d[N][N],MR[N][ for(j=0;j<N;j++)
N]; {
int main (void) {
{ r1[i][j] += A[i][j]+B[i][j];
int i,j,k; }
int c1 = 1; }
int c2 = 1; }
//M A// for(i=0;i<N;i++)
printf("Matriz A:\n"); {
for(i=0;i<N;i++) for(j=0;j<N;j++)
{ {
for(j=0;j<N;j++) printf("%d ",r1[i][j]);
{ }
A[i][j] += c1++; printf("\n");
printf("%d ",A[i][j]); }
} //A-B//
printf("\n"); printf("Matriz A-B\n");
} for(i=0;i<N;i++)
//M B// {
printf("Matriz B:\n"); for(j=0;j<N;j++)
for(i=0;i<N;i++) {
{ {
for(j=0;j<N;j++) r2[i][j] += A[i][j]-B[i][j];
{ }
B[i][j] = 2*c2++; }
printf("%d ", B[i][j]); }
} for(i=0;i<N;i++)
printf("\n"); {
} for(j=0;j<N;j++)
//M I// {
printf("Matriz I:\n"); printf("%d ",r2[i][j]);
for(i=0;i<N;i++) }
{ printf("\n");
for(j=0;j<N;j++) }
{ //A*A//
if (i==j) printf("Matriz A*A\n");
{ for(i=0;i<N;i++)
I[i][j]=1; {
} for(j=0;j<N;j++)
{ for(i=0;i<N;i++)
for(k=0;k<N;k++) {
{ for(j=0;j<N;j++)
r3[i][j] += (A[i][k]*A[k][j]); {
} for(k=0;k<N;k++)
} {
} r6[i][j] += (B[i][k]*A[k][j]);
for(i=0;i<N;i++) }
{ }
for(j=0;j<N;j++) }
{ for(i=0;i<N;i++)
printf("%d ",r3[i][j]); {
} for(j=0;j<N;j++)
printf("\n"); {
} printf("%d ",r6[i][j]);
//A*B// }
printf("Matriz A*B\n"); printf("\n");
for(i=0;i<N;i++) }
{ //demostracion =0//
for(j=0;j<N;j++) printf("Matriz demostracion =0\n");
{ for(i=0;i<N;i++)
for(k=0;k<N;k++) {
{ for(j=0;j<N;j++)
r4[i][j] += (B[i][k]*A[k][j]); {
} {
} d[i][j] += r3[i][j]-A[i][j]-(2*I[i][j]);
} }
for(i=0;i<N;i++) }
{ }
for(j=0;j<N;j++) for(i=0;i<N;i++)
{ {
printf("%d ",r4[i][j]); for(j=0;j<N;j++)
} {
printf("\n"); printf("%d ",d[i][j]);
} }
//B*B// printf("\n");
printf("Matriz B*B\n"); }
for(i=0;i<N;i++) //MR//
{ printf("la ecuancion no da 0\n");
for(j=0;j<N;j++) printf("Matriz MR\n");
{ for(i=0;i<N;i++)
for(k=0;k<N;k++) {
{ for(j=0;j<N;j++)
r5[i][j] += (B[i][k]*B[k][j]); {
} {
} MR[i][j] += r3[i][j]+r5[i][j]-r4[i][j]-r6[i][j]-I[i][j];
} }
for(i=0;i<N;i++) }
{ }
for(j=0;j<N;j++) for(i=0;i<N;i++)
{ {
printf("%d ",r5[i][j]); for(j=0;j<N;j++)
} {
printf("\n"); printf("%d ",MR[i][j]);
} }
//B*A// printf("\n");
printf("Matriz B*A\n"); }
//sum int i,j;
int sumd = 0; for(i=0;i<N;i++)
for(i=0;i<N;i++) {
{ }
for(j=0;j<N;j++) for(j=0;j<N;j++)
{ {
if (i==j) }
{ Matriz[i][j] = C++;
sumd += MR[i][j]; printf("%d ", Matriz[i][j]);
} printf("\n");
} return 0;
} }
printf ("suma diagona: %d",sumd);
return 0;
}
#include <stdio.h>
#define N 10
int Matriz[N][N]; // Declaración de una Matriz Cuadrada NxN,
N=10
int main(void)
{
printf("Matriz M:\n");
int C = 0;
int i, j;
for(i = 0; i < N; i++)
{
for(j = 0; j < N; j++)
{
Matriz[i][j] = 2 * C++;
printf("%d ", Matriz[i][j]);
}
printf("\n");
}
return 0;
}
#include <stdio.h>
#define N 3
int Matriz1[N][N]; // Declaración de una Matriz Cuadrada NxN,
N=3
int Matriz2[N][N]; // Declaración de una Matriz Cuadrada NxN,
N=3
#include <stdio.h> int Matriz3[N][N]; // Declaración de una Matriz Cuadrada NxN,
#define N 3 N=3
int Matriz[N][N]; // Declaración de una Matriz Cuadrada NxN, int main(void)
N=3... {
int main(void) printf("...Programa que suma 2 Matrices cuadradas NxN...:\n");
{ int C = 0;
printf("Matriz M:\n"); int i, j;
int C = 0; // Inicializar Matriz1, Matriz2 y Sumar Matriz1 + Matriz2
for(i = 0; i < N; i++) // Programa que crea una Matriz cuadrada de NxN con
{ Números Aleatorios
for(j = 0; j < N; j++) printf("...Programa que crea una Matriz cuadrada de NxN con
{ Números Aleatorios...\n");
Matriz1[i][j] = C++; srand(time(NULL)); // Inicializa la semilla para generar números
Matriz2[i][j] = 2 * Matriz1[i][j]; aleatorios
Matriz3[i][j] = Matriz1[i][j] + Matriz2[i][j]; int i, j;
} // Inicializar Matriz con Números Aleatorios
} for(i = 0; i < N; i++)
printf("Matriz 1:\n"); {
for(i = 0; i < N; i++) for(j = 0; j < N; j++)
{ {
for(j = 0; j < N; j++) Matriz[i][j] = rand() % 2; // Números aleatorios entre 0 y 1
{ }
printf("%d ", Matriz1[i][j]); }
} printf("Matriz Aleatoria:\n");
printf("\n"); for(i = 0; i < N; i++)
} {
printf("Matriz 2:\n"); for(j = 0; j < N; j++)
for(i = 0; i < N; i++) {
{ printf("%d ", Matriz[i][j]);
for(j = 0; j < N; j++) }
{ printf("\n");
printf("%d ", Matriz2[i][j]); }
} return 0;
printf("\n"); }
}
printf("Matriz 3:\n");
for(i = 0; i < N; i++)
{
for(j = 0; j < N; j++)
{
printf("%d ", Matriz3[i][j]);
}
printf("\n"); #include <stdio.h>
} #define N 4
return 0; int Matriz_Identidad[N][N];
} int main()
{
printf("Matriz Identidad:\n");
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if(i==j)
{
#include <stdio.h> Matriz_Identidad[i][j] = 1;
#include <stdlib.h> }
#include <time.h> else
#define N 10 {
int Matriz[N][N]; // Declaración de una Matriz Cuadrada NxN, Matriz_Identidad[i][j] = 0;
N=10 }
int main(void) }
{ }
for(i=0;i<N;i++)
{
for(j=0;j<N;j++) #include <stdio.h>
{ #define N 3
printf("%d ", Matriz_Identidad[i][j]); int MatrizInicial[N][N];
} int MatrizIdentidad[N][N];
printf("\n"); int MatrizResultado[N][N];
} int main(void)
return 0; {
} printf("Matriz Inicial:\n");
int sumaDiagonal = 0;
int c = 1;
int i, j;
// Inicialización de la matriz inicial con múltiplos de 2
for(i = 0; i < N; i++)
#include <stdio.h> {
#define N 3 for(j = 0; j < N; j++)
// Función para imprimir una matriz (evita código repetido) {
void print_matrix(const char* name, int matrix[N][N]) MatrizInicial[i][j] = 2 * c++;
{ printf("%d ", MatrizInicial[i][j]);
printf("%s:\n", name); }
for(int i = 0; i < N; i++) printf("\n");
{ }
for(int j = 0; j < N; j++) // Generación de la matriz identidad
{ printf("Matriz Identidad:\n");
printf("%3d ", matrix[i][j]); // %3d para mejor alineación for(i = 0; i < N; i++)
} {
printf("\n"); for(j = 0; j < N; j++)
} {
} if(i == j)
int main(void) {
{ MatrizIdentidad[i][j] = 1;
// Variables locales en lugar de globales }
int matriz1[N][N]; else
int matriz2[N][N]; {
int matriz3[N][N]; MatrizIdentidad[i][j] = 0;
// Inicialización más eficiente y compacta }
int counter = 0; }
for(int i = 0; i < N; i++) }
{ // Impresión de la matriz identidad
for(int j = 0; j < N; j++) for(i = 0; i < N; i++)
{ {
matriz1[i][j] = counter; for(j = 0; j < N; j++)
matriz2[i][j] = 2 * counter; {
matriz3[i][j] = matriz1[i][j] + matriz2[i][j]; printf("%d ", MatrizIdentidad[i][j]);
counter++; }
} printf("\n");
} }
// Imprimir todas las matrices usando la función // Suma de la matriz inicial y la matriz identidad -> Matriz
print_matrix("Matriz1", matriz1); Resultado
print_matrix("Matriz2", matriz2); printf("Matriz Resultado:\n");
print_matrix("Matriz3", matriz3); for(i = 0; i < N; i++)
return 0; {
} for(j = 0; j < N; j++)
{
MatrizResultado[i][j] = MatrizInicial[i][j] +
MatrizIdentidad[i][j];
printf("%d ", MatrizResultado[i][j]);
}
printf("\n"); }
} }
// Suma de la diagonal principal de la Matriz Resultado //Impresión de la Matriz C...
for(i = 0; i < N; i++) for(i=0;i<N;i++)
{ {
sumaDiagonal += MatrizResultado[i][i]; for(j=0;j<N;j++)
} {
printf("Suma diagonal = %d\n", sumaDiagonal); for(j=0;j<N;j++)
return 0; {
} printf("%d ", C[i][j]);
}
}
printf("\n");
}
//Inciso b) R = A*A - A*I...
printf("Matriz Identidad:\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if (i==j)
#include <stdio.h> {
#define N 3 I[i][j] = 1;
int A[N][N], B[N][N], C[N][N], I[N][N], R[N][N], TEMP[N][N]; }
int main(void) else
{ {
int Counter = 1; I[i][j] = 0;
int i,j,k; }
printf("Matriz A:\n"); }
for(i=0;i<N;i++) }
{ //Impreseión Matriz Identidad I...
for(j=0;j<N;j++) for(i=0;i<N;i++)
{ {
A[i][j] = Counter++; for(j=0;j<N;j++)
printf("%d ", A[i][j]); {
} printf("%d ", I[i][j]);
printf("\n"); }
} printf("\n");
printf("Matriz B:\n"); }
for(i=0;i<N;i++) printf("Matriz TEMP:\n");
{ for(i=0;i<N;i++)
for(j=0;j<N;j++) {
{ for(j=0;j<N;j++)
B[i][j] = A[i][j]; {
printf("%d ", A[i][j]); for(k=0;k<N;k++)
} {
printf("\n"); TEMP[i][j] += A[i][k]*I[k][j];
} }
printf("Matriz C:\n"); }
for(i=0;i<N;i++) }
{ //Impresión Matriz TEMP...
for(j=0;j<N;j++) for(i=0;i<N;i++)
{ {
for(k=0;k<N;k++) for(j=0;j<N;j++)
{ {
C[i][j] += A[i][k]*B[k][j]; printf("%d ", TEMP[i][j]);
} }
printf("\n");
}
printf("Matriz R:\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
R[i][j] = C[i][j] - TEMP[i][j];
printf("%d ", R[i][j]);
}
printf("\n");
}
return 0;
}