Autor Tema: Sumar las columnas de una matriz/tabla sin usar for anidado [C].-  (Leído 7305 veces)

Pino1952

  • Sin experiencia
  • *
  • Mensajes: 21
    • Ver Perfil
Hola, y que tengan un muy buen día.
creo que en el enunciado está resumido lo que no supe responder a la pregunta que encontré en el libro con el que estoy estudiando C.-
Bueno es todo, ¿se entiende, se puede?.-

Saludos.
Daniel
Abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2646
    • Ver Perfil
Re:Sumar las columnas de una matriz/tabla sin usar for anidado [C].-
« Respuesta #1 en: 02 de Noviembre 2014, 12:18 »
Hola, puedes hacer operaciones con vectores, matrices, tablas, etc. sin usar for mediante el uso de recursión. Por tanto la respuesta es "sí se puede, usando recursión"

Aquí tienes algunas referencias sobre recursión:

Concepto de recursividad: https://www.aprenderaprogramar.com/foros/index.php?topic=1493

Recorrer recursivamente matrices o tablas: www.aprenderaprogramar.com/foros/index.php?topic=814

Trabajo con matrices recursivas: www.aprenderaprogramar.com/foros/index.php?topic=1195

Ejemplo de recursividad en C: https://www.aprenderaprogramar.com/foros/index.php?topic=926


Crea el código y pégalo hasta donde puedas llegar, a partir de ahí intentaremos ayudarte a mejorarlo.

Salu2!

Pino1952

  • Sin experiencia
  • *
  • Mensajes: 21
    • Ver Perfil
Re:Sumar las columnas de una matriz/tabla sin usar for anidado [C].-
« Respuesta #2 en: 02 de Noviembre 2014, 15:46 »
Hola Ogramar.
Un gusto conocerte, unas cosas para aclarar, el primer enlace es un post que yo mismo di de alta por mis dudas en cuanto a la recursión que si bien todavía persisten, tengo algunos conceptos bastante claro gracias a la ayuda de Alex, me gustó muchísimo la idea de sumar las columnas de una matriz con recursividad, solo que no sé si me voy a animar siquiera a intentarlo, veremos.-
En cuanto a la manera que yo preguntaba encontré un blog con el título
“Usar un array de una dimensión como si fuera de dos” me puse a practicar y parece que lo logré, a continuación dejo el código que está recién finalizado, acepto sugerencias para mejorarlo.-

Código: [Seleccionar]
/*
    Usar un array de una dimensión como si fuera de dos
    El programa suma todas las columnas del array con un sólo bucle for.
*/

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

#define FILAS 5
#define COLUMNAS 10

void llenar(int arreglo[], int elementos);
void mostrar(int arreglo[], int elementos);
void sumar(int arreglo[], int elementos);

int main(int argc,char **argv){
int elementos = FILAS * COLUMNAS, arreglo[elementos];

llenar(arreglo, elementos);
mostrar(arreglo, elementos);
sumar(arreglo, elementos);

return EXIT_SUCCESS;
}

void llenar(int arreglo[], int elementos){
unsigned int hora = time(NULL), i;
srand(hora);

for(i=0; i < elementos; i++){
arreglo[i] =  rand()% 100;;
}
}

void mostrar(int arreglo[], int elementos){
int i;
for(i=0; i < elementos; i++){
(i%COLUMNAS == 0) ? printf("\n") : printf("");
printf(" %3d ", arreglo[i]);
}
}

void sumar(int arreglo[], int elementos){
int fila=0, columna=0, i, resultado=0;
printf("\n---------------------------------\n");
for(i=0; i < elementos; i++){
resultado += arreglo[fila+columna];
columna += COLUMNAS;
if((i+1) % FILAS == 0){
printf(" %d ", resultado);
resultado = 0;
fila++; columna=0;
}
}
}


Saludos.
Daniel
Abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2646
    • Ver Perfil
Re:Sumar las columnas de una matriz/tabla sin usar for anidado [C].-
« Respuesta #3 en: 02 de Noviembre 2014, 22:42 »
Hola, perdona pero no me había dado cuenta del post que iniciaste tú mismo. He visto el código y no le veo ninguna pega. Está bien pensado y bien construido y te permite simular un array de dos dimensiones usando un array de una sola dimensión, por tanto resuelve lo que pedía el ejercicio. Además es un buen ejemplo de uso del operador módulo (%). Otra cosa sería si te hubieran pedido sumar los elementos de una matriz sin usar bucles, ahí es cuando creo que no quedaría otra opción que usar recursividad (aunque pensando pensando siempre se llega a nuevas soluciones alternativas). La recursividad es compleja, por lo que si prefieres dejarla de lado de momento puedes hacerlo, ya que puedes aprender mucha programación sin necesidad de usarla. De todas formas, si aprendes a usarla verás que también es una herramienta interesante para los programadores.

Salu2

Príncipe_Azul

  • Principiante
  • **
  • Mensajes: 72
    • Ver Perfil
    • Foro ArgentinaIRC - Ayuda de Programación General, IRC y mIRC Scripting!
Re:Sumar las columnas de una matriz/tabla sin usar for anidado [C].-
« Respuesta #4 en: 03 de Noviembre 2014, 00:21 »
Hola, la recursividad es muy similar a Goto, a diferencia de que en vez de llamar a una etiqueta, simplemente la llamada se hace a la misma función.

Saludos!

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".