elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Duda, sumar elementos en torno a un punto de la matriz en C en: 7 Julio 2015, 21:47 pm
Buenas people, espero que podáis ayudarme.
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;

}

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!
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines