Reemplace el elemento medio de la array con la suma de los elementos circundantes

Dada una array cuadrada mat[][] de dimensiones impares, la tarea es cambiar el valor del elemento más central de la array a la suma de los elementos que lo rodean.
Ejemplos: 
 

Input: 
mat[][] = { {2, 1, 7}, 
            {3, 7, 2}, 
            {5, 4, 9} }
Output:
2 1 7
3 10 2
5 4 9

Input: 
mat[][] = {{1, 3, 5, 6, 7},
           {3, 5, 3, 2, 1},
           {1, 2, 3, 4, 5},
           {7, 9, 2, 1, 6},
           {9, 1, 5, 3, 2} }
Output: 
1 3 5 6 7
3 5 3 2 1
1 2 11 4 5
7 9 2 1 6
9 1 5 3 2

Aproximación: El elemento medio de la array de orden impar estará ubicado en la posición mat[n/2][n/2]
Por lo tanto, actualice directamente el elemento como: 
 

mat[n / 2][n / 2] = mat[n / 2 - 1][n / 2]
                  + mat[n / 2][n / 2 - 1]
                  + mat[n / 2 + 1][n / 2]
                  + mat[n / 2][n / 2 + 1]

A continuación se muestra la implementación del enfoque anterior:
 

C++

// C++ program to replace the value of the middle element
// of the matrix with the sum of surrounding elements
 
#include <iostream>
using namespace std;
const int MAX = 100;
 
// Function to print the matrix
void print(int mat[][MAX], int n)
{
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cout << mat[i][j] << " ";
        }
        cout << endl;
    }
}
 
// Function to change the value of the middle element
// of the matrix to the sum of surrounding elements
void changemiddle(int mat[][MAX], int n)
{
    // Change the middle element
    mat[n / 2][n / 2]
        = mat[n / 2 - 1][n / 2]
          + mat[n / 2][n / 2 - 1]
          + mat[n / 2 + 1][n / 2]
          + mat[n / 2][n / 2 + 1];
 
    // Function call to print the matrix
    print(mat, n);
}
 
// Driver code
int main()
{
    int mat[][MAX] = { { 2, 1, 7 },
                       { 3, 7, 2 },
                       { 5, 4, 9 } };
 
    changemiddle(mat, 3);
 
    return 0;
}

C

// C program to replace the value of the middle element
// of the matrix with the sum of surrounding elements
#include <stdio.h>
 
#define MAX 100
 
// Function to print the matrix
void print(int mat[][MAX], int n)
{
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      printf("%d ",mat[i][j]);
    }
    printf("\n");
  }
}
 
// Function to change the value of the middle element
// of the matrix to the sum of surrounding elements
void changemiddle(int mat[][MAX], int n)
{
  // Change the middle element
  mat[n / 2][n / 2]
    = mat[n / 2 - 1][n / 2]
    + mat[n / 2][n / 2 - 1]
    + mat[n / 2 + 1][n / 2]
    + mat[n / 2][n / 2 + 1];
 
  // Function call to print the matrix
  print(mat, n);
}
 
// Driver code
int main()
{
  int mat[][MAX] = { { 2, 1, 7 },
                    { 3, 7, 2 },
                    { 5, 4, 9 } };
 
  changemiddle(mat, 3);
 
  return 0;
}
 
// This code is contributed by kothavvsaakash.

Java

// Java program to replace the value of the middle element
// of the matrix with the sum of surrounding elements\
 
public class GFG{
     
    // Function to print the matrix
    static void print(int mat[][], int n)
    {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                System.out.print(mat[i][j] + " ");
            }
             System.out.println();
        }
    }
     
    // Function to change the value of the middle element
    // of the matrix to the sum of surrounding elements
    static void changemiddle(int mat[][], int n)
    {
        // Change the middle element
        mat[n / 2][n / 2]
            = mat[n / 2 - 1][n / 2]
              + mat[n / 2][n / 2 - 1]
              + mat[n / 2 + 1][n / 2]
              + mat[n / 2][n / 2 + 1];
     
        // Function call to print the matrix
        print(mat, n);
    }
     
    // Driver code
    public static void main(String []args)
    {
        int mat[][] = { { 2, 1, 7 },
                           { 3, 7, 2 },
                           { 5, 4, 9 } };
     
        changemiddle(mat, 3);
    }
    // This code is contributed by Ryuga
}

Python3

# Python3 program to replace the value
# of the middle element of the matrix
# with the sum of surrounding elements
 
MAX = 100
 
# Function to print the matrix
def printMatrix(mat, n):
 
    for i in range(n):
        for j in range(n):
            print(mat[i][j], end = " ")
         
        print()
 
# Function to change the value of
# the middle element of the matrix
# to the sum of surrounding elements
def changemiddle(mat, n):
 
    # Change the middle element
    mat[n // 2][n // 2] = (mat[n // 2 - 1][n // 2] +
                           mat[n // 2][n // 2 - 1] +
                           mat[n // 2 + 1][n // 2] +
                           mat[n // 2][n // 2 + 1])
 
    # Function call to print the matrix
    printMatrix(mat, n)
 
# Driver Code
if __name__ == "__main__":
 
    mat = [ [ 2, 1, 7 ],
            [ 3, 7, 2 ],
            [ 5, 4, 9 ]]
 
    changemiddle(mat, 3)
 
# This code is contributed
# by rituraj_jain

C#

// C# program to replace the value of the middle element
// of the matrix with the sum of surrounding elements
  
using System;
public class GFG{
      
    // Function to print the matrix
    static void print(int[,] mat, int n)
    {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                Console.Write(mat[i,j] + " ");
            }
             Console.Write("\n");
        }
    }
      
    // Function to change the value of the middle element
    // of the matrix to the sum of surrounding elements
    static void changemiddle(int[,] mat, int n)
    {
        // Change the middle element
        mat[n / 2,n / 2]
            = mat[n / 2 - 1,n / 2]
              + mat[n / 2,n / 2 - 1]
              + mat[n / 2 + 1,n / 2]
              + mat[n / 2,n / 2 + 1];
      
        // Function call to print the matrix
        print(mat, n);
    }
      
    // Driver code
    public static void Main()
    {
        int[,] mat = { { 2, 1, 7 },
                           { 3, 7, 2 },
                           { 5, 4, 9 } };
      
        changemiddle(mat, 3);
    }
    
}

PHP

<?php
// PHP program to replace the value of
// the middle element of the matrix
// with the sum of surrounding elements
 
// Function to print the matrix
function printmat(&$mat, $n)
{
    for ($i = 0; $i < $n; $i++)
    {
        for ($j = 0; $j < $n; $j++)
        {
            echo ($mat[$i][$j]);
            echo (" ");
        }
        echo ("\n");
    }
}
 
// Function to change the value of the
// middle element of the matrix to the
// sum of surrounding elements
function changemiddle(&$mat, $n)
{
    // Change the middle element
    $mat[$n / 2][$n / 2] = $mat[$n / 2 - 1][$n / 2] +
                           $mat[$n / 2][$n / 2 - 1] +
                           $mat[$n / 2 + 1][$n / 2] +
                           $mat[$n / 2][$n / 2 + 1];
 
    // Function call to print the matrix
    printmat($mat, $n);
}
 
// Driver code
$mat = array(array(2, 1, 7),
             array(3, 7, 2),
             array(5, 4, 9));
 
changemiddle($mat, 3);
 
// This code is contributed
// by Shivi_Aggarwal
?>

Javascript

<script>
 
// JavaScript program to replace the
// value of the middle element
// of the matrix with the sum of
// surrounding elements
     
    // Function to print the matrix
    function print(mat,n)
    {
        for (let i = 0; i < n; i++) {
            for (let j = 0; j < n; j++) {
                document.write(mat[i][j] + " ");
            }
             document.write("<br>");
        }
    }
     
    // Function to change the value of the middle element
    // of the matrix to the sum of surrounding elements
    function changemiddle(mat,n)
    {
        // Change the middle element
        mat[Math.floor(n / 2)][Math.floor(n / 2)]
            = mat[Math.floor(n / 2) - 1][Math.floor(n / 2)]
              + mat[Math.floor(n / 2)][Math.floor(n / 2) - 1]
              + mat[Math.floor(n / 2) + 1][Math.floor(n / 2)]
              + mat[Math.floor(n / 2)][Math.floor(n / 2) + 1];
       
        // Function call to print the matrix
        print(mat, n);
    }
     
    // Driver code
    let mat = [ [ 2, 1, 7 ],
            [ 3, 7, 2 ],
            [ 5, 4, 9 ]] ;
     
    changemiddle(mat, 3)
     
     
// This code is contributed by rag2127
 
</script>
Producción: 

2 1 7 
3 10 2 
5 4 9

 

Complejidad de tiempo: O (n * m), aquí n es el número de filas y m es el número de columna.
 

Publicación traducida automáticamente

Artículo escrito por gfg_sal_gfg y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *