Curso de Programación en C/Prog77

De WikiCabal
Saltar a: navegación, buscar

Prog77

#include <stdio.h>

#define FILAS 3
#define COLS 4

int sum2d( int rows, int cols, int ar[rows][cols] );

int main( void )
{
   int cs = 10,
       i,
       j,
       junk[FILAS][COLS] = {
                             {2,4,6,8},
                             {3,5,7,9},
                             {12,10,8,6}
                           },
       masjunk[FILAS-1][COLS+2] = {
                                    {20,30,40,50,60,70},
                                    {5,6,7,8,9,10}
                                  },
       rs = 3,
       varr[rs][cs];

   for( i = 0; i < rs; i++ )
     for( j = 0; j < cs; j++ )
       varr[i][j] = i * j + j;

   printf( "3x5 arreglo\n" );
   printf( "Sum de todos los elementos = %d\n",
              sum2d( FILAS, COLS, junk ) );

   printf( "2x6 arreglo\n" );
   printf( "Sum de todos los elementos = %d\n",
              sum2d( FILAS-1, COLS+2, masjunk ) );

   printf( "3x10 VLA\n" );
   printf( "Sum de todos los elementos = %d\n",
              sum2d( rs, cs, varr ) );

   return 0;
}

int sum2d( int rows, int cols, int ar[rows][cols] )
{
  int r;
  int c;
  int tot = 0;

  for( r = 0; r < rows; r++ )
    for( c = 0; c < cols; c++ )
      tot += ar[r][c];

  return tot;
}

Resultado

[rrc@Pridd CClase]$ gcc -Wall -O2 -o Prog77 Prog77.c
[rrc@Pridd CClase]$ ./Prog77
3x5 arreglo
Sum de todos los elementos = 80
2x6 arreglo
Sum de todos los elementos = 315
3x10 VLA
Sum de todos los elementos = 270
[rrc@Pridd CClase]$ 

=== Explicación ===

La asignación de los elementos del arreglo varr = [rs][cs] queda así:

for( i = 0; i < rs; i++ )

  for( j = 0; j < cs; j++ )
    varr[i][j] = i * j + j;

igual a:

varr = [3][10] = { { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },{ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18 },{ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27 } }