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

10 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. realmente puedes compilarlo en donde quieras dependiendo del OS que te guste usar, lo unico que si hay que tratar de cuidar es que contenga las funciones de la biblioteca estandar de ANSI C
    ya que cuidando eso realmente no importa que compilador uses para tu programa

    ResponderEliminar
  7. 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
  8. Pues, +3 alan, y +1 a roberto/jorge/alan/oscar/cecy

    ResponderEliminar