sábado, 20 de noviembre de 2010

Arreglos multidimensionales en C (Puntos extra)

Introducción

Un arreglo o vector o array es una colección de variables del mismo tipo que se refieren por medio de indices.

Por ejemplo un arreglo sería este:

int numeros[10];
En este caso son 10 variables llamadas todas "numeros" pero por ejemplo, si quiero acceder a alguna de ellas solo hago referencia al indice que quiero. En C el primer indice o elemento es el elemento 0.


Arreglos 
Desde el punto de vista lógico una matriz se puede ver como un conjunto de elementos ordenados en fila (o filas y columnas si tuviera dos dimensiones). 

Hay arreglos unidimensionales(fila)  o multidimensionales. Generalmente se trabaja con arreglos de 2 dimensiones ( fila y columna).

Ejemplo Clasico (Arreglo Bidimensional)

En este ejemplo mostraré como funcionan los arreglos multidimensionales, en este caso trabajaré con 2 dimensiones (bidimensionales) , lo unico que hace este programa es hacer una suma de arreglos los hice yo , te pide el numero de filas y de columnas (tienen que ser el mismo valor en las 2 ) , lo llenas y al final suma todos los elementos del arreglo.

#include <stdio.h>   

int main (void){
   
   
    int F; //Filas//
    int C; //Columnas//
   
    do
    {
    
     printf("Escriba las filas de la matriz ");
     scanf ("%d", &amp;F);
     printf("Escriba las columnas de la matriz ");
     scanf ("%d", &amp;C);
   
     }
    while ( F != C );
    printf("La matriz es de %d x %d por lo cual tendra %d elementos \n\n" , F , C , (F*C));
   
  int matriz [F][C];   //F - Filas      C -  Columnas // //j - Filas   i = Columnas //

 
  int i;  //Columna//
  int j;  // Fila//
 
  for ( i = 1 ; i &lt;= C ; i++ ) 
  {

      for (j=1 ; j &lt;= F ; j++ )
    {
         
          printf("Escriba el valor de elemento %d en la columna %d " , j,i);
          scanf ("%d" , &amp;matriz[i][j] );
         
         
    }
   
}  
   
int suma=0;

for (i = 1 ; i &lt;= C ; i++ )
{
    for (j = 1 ; j&lt;= F ; j++ )
    {
        suma = suma + matriz[i][j];
        }
}


   
  printf ("La suma es %d \n\n" , suma ); 
   

    return 0;
}

Gráficamente

Bueno pues aqui les muestro una imagen para que entiendan los arreglos unidimensionales,  bidimensionales y multidimensionales.

La primer imagen ,  un arreglo unidimensional , la segunda a la derecha es un arreglo bidimensional y el de abajo un arreglo multidimensional.

Fuentes:
http://es.wikipedia.org/wiki/Vector_%28programaci%C3%B3n%29  --
Un poco de la info de introducción

http://logicacomputacion.blogspot.com/2007/09/clase-10-estructuras-de-datos-y.html --
Imagen

9 comentarios:

  1. Ey compañero andan faltando las librerias

    ResponderEliminar
  2. Y creo que el último for sale sobrando ya que no realiza ninguna función , además el while de cuando llena la matriz esta medio raro,... porque pides como condicion que sean igual el numero de filas y columnas??.. bien pueden ser distintas... y recuerda lo dicho antes de system("pause") ;)

    ResponderEliminar
  3. las librerias quien sabe porque no salen , como que el blog las confunde con las etiquetas ya vez que en html se usa < y> alomejor el blog las toma como codigo por eso es que no salen , pero en realidad la primera liberia es stdio.h y la segunda es windows.h esa nadamas la uso para que al final el programa se pare y no te cierre la ventana con el resultado y si , el ultimo for sale sobrando deja corrijo eso, gracias por la observación :D

    ResponderEliminar
  4. en el while es para que el numero de filas sea la misma que columnas, si ambas son diferentes no continua , se que se puede hacer de otra manera pero ese es un ejemplo que hice yo el semestre pasado a base de un diagrama de flujo. y pues el getch o getche no me gusta usarlo en lo personal.

    ResponderEliminar
  5. Alan te faltan librerias y recuerda que system(""); no sirve en la terminal emacs. Esan solo sirven para windos en especial la libreria windos obio si quieres correr este programa en emacs no te va a correr bien.

    ResponderEliminar
  6. Bueno en realidad, Dev C es una IDE, esto es, un entorno de desarrollo integrado para C en windows, pero su compilador es MinGW

    pag -> http://es.wikipedia.org/wiki/MinGW

    Por lo tanto no podemos decir que Dev C es un compilador.
    Aunque si tu programa es portable, en cualquier OS compila. :)

    ResponderEliminar
  7. Pues, +3 alan, y +1 a roberto/jorge/alan/oscar/cecy

    ResponderEliminar