El ejercicio pide coger una matriz, y que como resultado obtengas esa misma matriz, con la media aritmética del total de números que la conforman, y además, que cada elemento de esa matriz esté formado por la suma de los elementos de su alrededor.
Código:
#include <stdio.h>
#include <stdlib.h>
//Matriz. Hacer media aritmética de todos los elementos y cada uno es la suma de los que hay a su alrededor.
#define N 4
#define M 4
int main(void)
{
int i;
int j;
float ju[N][M];
int a;
int b;
int ja[N][M];
int cont=0; //Contador para la media aritmética
//Pedir mat
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
printf("\n Introduse el valoh si tienes valoh en el punto %d %d : ",i+1,j+1);
scanf("%f",&ju[i][j]);
cont++; //Cada vez que introduzcan un dato el contador sube, igualando el número de datos totales.
}
}
printf("\n El número de elementos es %d",cont);
//Enseñar mat
printf("\n La matris sera: \n");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
printf("%f ",ju[i][j]);
}
printf("\n");
}
//Dividimos cada elemento por la media aritmética
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
ju[i][j]=ju[i][j]/cont;
}
}
/*for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
for(a=i-N/2;a<N;a++)
{
for(b=j-M/2;b<M;b++)
{
}
}
ju[i][j]+=ja[a][b];
}
}*/
printf("\n La matriz dividida entre la media aritmética será: \n");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
printf("%f ",ju[i][j]);
}
printf("\n");
}
return 0;
}
#include <stdlib.h>
//Matriz. Hacer media aritmética de todos los elementos y cada uno es la suma de los que hay a su alrededor.
#define N 4
#define M 4
int main(void)
{
int i;
int j;
float ju[N][M];
int a;
int b;
int ja[N][M];
int cont=0; //Contador para la media aritmética
//Pedir mat
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
printf("\n Introduse el valoh si tienes valoh en el punto %d %d : ",i+1,j+1);
scanf("%f",&ju[i][j]);
cont++; //Cada vez que introduzcan un dato el contador sube, igualando el número de datos totales.
}
}
printf("\n El número de elementos es %d",cont);
//Enseñar mat
printf("\n La matris sera: \n");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
printf("%f ",ju[i][j]);
}
printf("\n");
}
//Dividimos cada elemento por la media aritmética
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
ju[i][j]=ju[i][j]/cont;
}
}
/*for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
for(a=i-N/2;a<N;a++)
{
for(b=j-M/2;b<M;b++)
{
}
}
ju[i][j]+=ja[a][b];
}
}*/
printf("\n La matriz dividida entre la media aritmética será: \n");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
printf("%f ",ju[i][j]);
}
printf("\n");
}
return 0;
}
Ahora bien, no sé como hacer que cada elemento tenga la suma de los elementos que están en torno a él, ahora que ya tengo la media aritmética aplicada a cada elemento.
Por ejemplo si tenemos la matriz:
00 01 02 03
10 11 12 13
20 21 22 23
30 31 33 34
Cada elemento sería (formando un cuadrado imaginario en torno al punto):
00 = 00 + 01 + 10 +11
01 = 00 +01 + 02 + 10 + 11 + 12
11 = 00 + 01 + 02 + 10 +11 +12 +20 + 21 +22
Me han dejado caer que es usando condicionales que nunca tomen los valores menores que 0 para i o j, y también que sean menores que N (ya que los valores por la izquierda o arriba del 00 por ejemplo no existen).
Luego que en cada iteración de la matriz sea un recorrido de las que hay en torno a él, a través de nuevos vectores (por eso en el código tengo a y b). Pero no se me ocurre como hacerlo.
Teóricamente en el N/2 y M/2 estaríamos en una distancia en torno a ese mismo punto, pero no sé como escribirlo en código.
Saludos y espero que me ayudéis
Y gracias!