Un arreglo es un conjunto de celdas de memoria relacionadas entre si ya que todos tienen el mismo nombre y almacenan el mismo tipo de datos para referirse a una celda en particular algún elemento dentro del arreglo y entre corchetes [] el numero de posición del elemento dentro del arreglo.
El primer elemento se almacena en la posición 0 del arreglo, es decir el primer elemento del arreglo se conoce como a[0], el segundo como a[1], el séptimo como a[6] y en general el elemento de orden i del arreglo a se conoce como a[i-1].
El número de posición que aparece dentro de los corchetes se conoce como índice y debe ser un número entero o una expresión entera, por ejemplo:
printf ("%i", a[0]+a[5]+a[10]);
x=a[7]/2;
x=a[4]=12;
Para declarar un arreglo se emplea la siguiente sintaxis:tipo_de_dato nombre_del_arreglo [número de elementos]; int a[12]; float f[10]; char nom_emp [30];Ejemplo:
#include <stdio.h>
#include <conio.h>
#define MAX 12
void main(){
int a[MAX], b[MAX], c[MAX], i, j=0, k=0;
clrscr();
printf ("Programa que almacena 12 numeros en un arreglo ");
printf ("y luego los separa en dos de acuerdo a su valor.\n");
for (i=0; i < MAX; i++){
printf ("Introduce el valor %i: ", i+1);
scanf ("%i", &a[i]);
}
for (i=0; i < MAX; i++)
if (a[i] < MAX){
b[j] = a[i];
j++;
}
else {
c[k] = a[i];
k++;
}
printf ("\nLos numeros quedan asi:\n\n");
for (i=0; i < j; i++)
printf ("%i\n", b[i]);
for (i=0; i < k; i++)
printf ("\t%i\n", c[i]);
getch();
}
ArribaAlgoritmo de ordenamiento Burbuja
Este algoritmo compara elementos consecutivos del arreglo uno con respecto del otro, si es mayor o menor según el tipo de ordenamiento y los cambia de posición. Este proceso se repite recorriendo todo el arreglo para posicionar un solo dato, por lo que es necesario repetirlo para los demás datos del arreglo. Su implementación es la siguiente:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define TAM 10
void main(){
int a[TAM], temp, i, j;
clrscr();
randomize(); //Inicializa el generador de numeros aleatorios
printf ("Llenando arreglo con números aleatorios\n");
for (i=0; i< TAM; i++)
a[i]=random(100);
//Implementacion de Ordenamiento por burbuja de mayor a menor
for (j=1; j <= TAM; j++)
for (i=0; i< TAM-1; i++)
if (a[i] < a[i+1]){
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
printf ("\nArreglo ordenado\n");
for (i=0; i< TAM; i++)
printf ("a[%d] = %d\n", i, a[i]);
getch();
}
ArribaBusqueda Secuencial
Este algoritmo compara uno a uno los elementos del arreglo hasta recorrerlo por completo indicando si el número buscado existe. Su implementación es la siguiente:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define TAM 10
void main(){
int a[TAM], temp, i, j, num;
clrscr();
randomize(); //Inicializa el generador de numeros aleatorios
printf ("Llenando arreglo con números aleatorios\n");
for (i=0; i< TAM; i++)
a[i]=random(100);
printf ("Numero a buscar? ");
scanf ("%d", &num);
for (i=0; i< TAM; i++)
if (a[i] == num){
printf ("\nValor encontrado");
printf ("\nPosicion: %d", i);
}
else
printf ("\nNo existe");
printf ("El arreglo era:\n");
for (i=0; i< TAM; i++)
printf ("%d ", a[i]);
getch();
}
ArribaBusqueda Binaria
Este algoritmo permite buscar de una manera más eficiente un dato dentro de un arreglo, para hacer esto se determina el elemento central del arreglo y se compara con el valor que se esta buscando, si coincide termina la busqueda y en caso de no ser asi se determina si el dato es mayor o menor que el elemento central, de esta forma se elimina una mitad del arreglo junto con el elemento central para repetir el proceso hasta encontrarlo o tener solo un elemento en el arreglo. Para poder aplicar este algorimo se requiere que el arreglo este ordenado. Su implementación es la siguiente:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define TAM 15
void main(){
int a[TAM], busca, temp, bajo, alto, central;
printf("Llenando el arreglo con números aleatorios\n");
randomize(); //Inicializa el generador de aleatorios
for (int i=0; i< TAM; i++)
a[i]=random(100);
//Implementacion de Ordenamiento por burbuja de menor a mayor
printf ("Ordenando arreglo...\n");
for (int j=1; j <= TAM; j++)
for (i=0; i< TAM-1; i++)
if (a[i] > a[i+1]){
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
//Implementacion de busqueda binaria
printf ("\nIntroduce un numero a buscar: ");
scanf ("%d", &busca);
bajo = 0;
alto = TAM-1;
central = (bajo+alto)/2;
while (bajo < alto && busca != a[central]){
if(busca > a[central])
bajo = central+1;
else
alto = central-1;
central=(bajo+alto)/2;
}
if (busca == a[central])
printf("\n%d encontrado en posicion %d", busca, central);
else
printf("\n%d no existe", busca);
printf ("\n\nEl arreglo ordenado era\n\n");
for (i=0; i< TAM; i++)
printf ("%d ", a[i]);
getch();
}
ArribaEstructuras de datos
Las estructuras se definen como conjuntos de datos de diferente tipo. Se pueden declarar de las siguentes maneras:
struct nomina
{
char nom[80];
char puesto[40];
float sueldo;
int id;
}
struct nomina empleado_1, empleado_2, empleado[50];
struct
{
char nom[80];
char puesto[40];
float sueldo;
int id;
}
empleado_1, empleado_2, empleado[50];
typedef struct
{
char nom[80];
char puesto[40];
float sueldo:
int id;
} nomina;
nomina empleado_1; empleado_2; empleado[50];
Las estructuras, como cualquier otro tipo de dato, se pueden representar en
arreglos.#includestruct { char nom[60]; char mat[40]; float cb, pc, cf; flat prom; } alumno[50]; float aux; void main() { int i, n; printf ("Cuantos alumnos? "); scanf ("%d", &n); flushall(); printf ("\nLectura de datos"); }
No hay comentarios:
Publicar un comentario