Curso de Programación en C/Prog77

De WikiCabal
Ir a la navegación Ir a la búsqueda

Prog77

 1 #include <stdio.h>
 2 
 3 #define FILAS 3
 4 #define COLS 4
 5 
 6 int sum2d( int rows, int cols, int ar[rows][cols] );
 7 
 8 int main( void )
 9 {
10    int cs = 10,
11        i,
12        j,
13        junk[FILAS][COLS] = {
14                              {2,4,6,8},
15                              {3,5,7,9},
16                              {12,10,8,6}
17                            },
18        masjunk[FILAS-1][COLS+2] = {
19                                     {20,30,40,50,60,70},
20                                     {5,6,7,8,9,10}
21                                   },
22        rs = 3,
23        varr[rs][cs];
24 
25    for( i = 0; i < rs; i++ )
26      for( j = 0; j < cs; j++ )
27        varr[i][j] = i * j + j;
28 
29    printf( "3x5 arreglo\n" );
30    printf( "Sum de todos los elementos = %d\n",
31               sum2d( FILAS, COLS, junk ) );
32 
33    printf( "2x6 arreglo\n" );
34    printf( "Sum de todos los elementos = %d\n",
35               sum2d( FILAS-1, COLS+2, masjunk ) );
36 
37    printf( "3x10 VLA\n" );
38    printf( "Sum de todos los elementos = %d\n",
39               sum2d( rs, cs, varr ) );
40 
41    return 0;
42 }
43 
44 int sum2d( int rows, int cols, int ar[rows][cols] )
45 {
46   int r;
47   int c;
48   int tot = 0;
49 
50   for( r = 0; r < rows; r++ )
51     for( c = 0; c < cols; c++ )
52       tot += ar[r][c];
53 
54   return tot;
55 }

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 } }