sábado, 28 de junio de 2014

EVAP 6

Matrices
Matrices (arrays multidimensionales) Es posible manejar arrays de más de una dimensión, denominados en general matrices. Cada dimensión está representada por un subíndice en la matriz. Por tanto, una matriz bidimensional tiene dos subíndi- ces; una matriz tridimensional tiene tres subíndices; y así sucesivamente. Una matriz puede tener cualquier número de dimensiones, aunque las matrices más utilizadas son las de dos dimensiones.
Un buen ejemplo de matriz es un tablero de ajedrez. Una dimensión representa las ocho filas; la otra dimensión representa las ocho columnas.
Inicialización de matrices Las matrices también se pueden inicializar. La asignación de la lista de valores a los elementos de la matriz se realiza manteniendo el primer índice fijo mientras el segundo varía. Por tanto, si tenemos una matriz  
int matriz1[5][3]; 
los tres primeros elementos irán a matriz1[0], los tres siguientes a matriz1[1], y así sucesivamente.
La matriz anterior se puede inicializar de la siguiente manera:  
int matriz1[5][3] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }; 
Para mayor claridad, se pueden agrupar los valores entre llaves. Por ejemplo,
  int matriz1[5][3] = { {1,2,3},  {4,5,6}, {7,8,9  {10,11,1  {13,14,15} };
  El compilador ignora las llaves interiores, que hacen más sencillo comprender cómo se distribuyen los va- lores. Cada valor debe separarse con una coma, independientemente de que se utilicen llaves o no. La inicialización completa si que debe encerrarse entre llaves, y debe finalizar con punto y coma.
Matrices
Crea una matriz bidimensional. La primera dimensión contiene los números del 0 al 4. La segunda dimensión consta de los valores que duplican los valores de la primera dimensión.
Creación de una matriz multidimensional

  #include <stdio.h> 
 int main() 
 { 
 int i,j; 
 int matriz[5][2] = { {0,0}, {1,2}, {2,4}, {3,6}, {4,8}};

for (i = 0; i<5; i++)
      for (j=0; j<2; j++)
{
printf("matriz[%d][%d] = ", i, j);
 printf("%d \t", matriz[i][j]);
       }
   printf("\n");
 }
return 0; 18: } 


Salida del programa

matriz[0][0] = 0     
  matriz[0][1] = 0
 matriz[1][0] = 1      
 matriz[1][1] = 2
 matriz[2][0] = 2     
  matriz[2][1] = 4
 matriz[3][0] = 3      
 matriz[3][1] = 6
matriz[4][0] = 4   

 matriz[4][1] = 8

ejemplo:   

// multidimensional_arrays.cpp
// compile with: /EHsc
// arguments: 3
#include <limits>   // Includes DBL_MAX
#include <iostream>

const int cMkts = 4, cFacts = 2;

// Declare a float that represents the transportation costs
double TransportCosts[][cMkts] = { 
   { 32.19, 47.29, 31.99, 19.11 },
   { 11.29, 22.49, 33.47, 17.29 },
   { 41.97, 22.09,  9.76, 22.55 }  
};

// Calculate size of unspecified dimension
const int cFactories = sizeof TransportCosts /
                  sizeof( double[cMkts] );

double FindMinToMkt( int Mkt, double myTransportCosts[][cMkts], int mycFacts);

using namespace std;

int main( int argc, char *argv[] ) {
   double MinCost;

   if (argv[1] == 0) {
      cout << "You must specify the number of markets." << endl;
      exit(0);
   }
   MinCost = FindMinToMkt( *argv[1] - '0', TransportCosts, cFacts);
   cout << "The minimum cost to Market " << argv[1] << " is: "
       << MinCost << "\n";
}

double FindMinToMkt(int Mkt, double myTransportCosts[][cMkts], int mycFacts) {
   double MinCost = DBL_MAX;

   for( int i = 0; i < cFacts; ++i )
      MinCost = (MinCost < TransportCosts[i][Mkt]) ?
         MinCost : TransportCosts[i][Mkt];

   return MinCost;
}

No hay comentarios:

Publicar un comentario