TransWikia.com

Suma de fila por columna

Stack Overflow en español Asked by milagros on February 23, 2021

Tengo que escribir una matriz 10 x 10 y luego sumar sus elementos (la primera fila por la ultima columna, segunda fila por la ante-ultima y así sucesivamente). Ya hice la matriz (con recorrido en vertical, de izquierda a derecha) e incluso hice la suma de cada fila y columna como se muestra en el código pero no se como puedo hacer para sumar una fila con una columna.

#include <stdio.h>
#include <stdlib.h>

int main(void) { 
  int i,j;
  int x=-1;
  int mat[10][10];
  int suma;
  int vert[10];
  int horiz[10];

printf("Recorrido de la matrizn");
printf("n");
  
 //bucle de matriz
for(j=0; j<10; j++)
   for(i=0; i<10; i++){
     x=x+1;
     mat[i][j]= x;}

 //impresion de la matriz 
for(j=0; j<10; j++){
   for(i=0; i<10; i++)
printf("%3dt",mat[j][i]);
}
printf("nn");

 // suma de cada fila
 for(i=0;i<10;i++){
  suma=0;
    for(j=0;j<10;j++){
      suma+=mat[i][j];
      vert[i]=suma;}}

 // suma de cada columna
 for(j=0;j<10;j++){
  suma=0;
    for(i=0;i<10;i++){
      suma+=mat[i][j];
      horiz[j]=suma;}}

// imprime los resultados de cada fila y columna
 for(i=0;i<10;i++)
  printf("fila %dn",vert[i]);
 for(j=0; j<10; j++)
 printf("columna %dn",horiz[j]);
 printf("nn");

printf("nn");
printf("Fin del programa.n");
 return 0;
}

One Answer

Por lo que preguntas, supongo que lo que quieres es sumar lo que ya has sumado y almacenado en ambos arrays que son el horiz[] (de las columnas) y el vert[] (de las filas). Esto podrías realizarlo haciendo uso de un tercer array para ir almacenando dicha suma entre fila/columna. P.e. podrías ponerlo en la zona donde declaras las variables:

/*parte de código declaración de variables*/
int _final[10];
/*resto de código*/

La idea de ir sumando la primera fila con la última columna, la segunda fila con la penúltima columna etc. es algo más de aritmética que de programación. Como en la matriz quieres ir sumando en la parte de filas de arriba hacia abajo y en la parte de columnas de derecha a izquierda, puedes aplicar un for y dentro de él ir metiendo en celdas de _final[] la suma entre horiz[] y vert[]. Para vert[] lo tienes fácil ya que ha ido almacenando la suma de cada fila de arriba hacia abajo por lo que cuando iteres con un for no hay problema. Para el horiz[] es donde tienes que controlar qué celda, con la suma de la columna, quieres sumar con la fila que le corresponde ya que almacenó los valores de las columnas de izquierda a derecha por lo que en cada iteración debes ir decrementando la posición en el array en vez de ir incrementando como le pasará al vert[] y al propio _final[] para ir almacenando dicha suma. El fragmento de código podría quedar tal que así:

    /*Después de ver los resultados de fila y columna*/

printf("Suma de fila por columna.n");
for(i=0; i<10; i++){

    _final[i] = vert[i] + horiz[9-i];   /*horiz que contiene la suma en columnas, decrementando con ayuda de 'i' restando a la máxima posición disponible del array, recorre el array de derecha a izquierda*/
}

printf("Resultado de suma fila por columna: n");
for (i = 0; i < 10; i++)
{

    printf("suma %dn",_final[i]);
}

/*Antes del printf "Fin del programa."*/

Me sale por pantalla con lo nuevo implementado de código:

Suma de fila con columna.
Resultado de suma fila con columna: 
suma 1395
suma 1305
suma 1215
suma 1125
suma 1035
suma 945
suma 855
suma 765
suma 675
suma 585

Correct answer by DomJoShui on February 23, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP