Documentos de Académico
Documentos de Profesional
Documentos de Cultura
APUNTES
UNIDAD 4.
Estructuras de datos estáticas. ARRAYS.
Tipo nombre_de_variable[tamaño];
int tabla[10];
39
FUNDAMENTOS DE PROGRAMACIÓN. APUNTES
Ejemplo:
/* Declaración de un array. */
#include <stdio.h>
main() /* Rellenamos del 0 - 9 */
{
int vector[10],i;
for (i=0;i<10;i++) vector[i]=i;
for (i=0;i<10;i++) printf(" %d",vector[i]);
}
0 1 2 3 4 5 6 7 8 9
Ejemplos:
40
FUNDAMENTOS DE PROGRAMACIÓN. APUNTES
• CADENAS
Ejemplos:
Printf(“%c”, a[1]);
char P[4]={‘a’,’b’,’c’,’\0’}….....
printf(“%s”,P)
o
printf(P)
(4 de herb y 1 de \0):
char izena[5]=“Herb”
41
FUNDAMENTOS DE PROGRAMACIÓN. APUNTES
char *strcat(char *s1, const char *s2)
Devuelve cero si las dos cadenas son iguales, mayor que cero
si la cadena apuntada por s1 es mayor que la apuntada por s2
y, y menor que cero si la cadena apuntada por s1 es menor
que la cadena apuntada por s2. Todas las comparaciones se
hacen alfabéticamente.
42
FUNDAMENTOS DE PROGRAMACIÓN. APUNTES
int getch()
int getche()
#include <stdio.h>
#include <conio.h>
main()
{
char cadena[80];
printf(“introduzca su nombre completo: ”);
gets(cadena);
printf(“hola ”);
puts(cadena);
printf(“\n\n”);
printf(“\nPulse una tecla para continuar\n”);
getch();
#include <stdio.h>
#include <string.h>
main()
{
char c1[80], c2[80];
gets(c1);
gets(c2);
printf(“longitudes: %d %d\n”, strlen(c1), strlen(c2));
if (!strcmp(c1,c2)) printf(“las cadenas son iguales\n”);
strcat(c1,c2);
printf(“%s\n”,c1);
43
FUNDAMENTOS DE PROGRAMACIÓN. APUNTES
Ejemplo:
#include "stdio.h"
#include "string.h"
#include "ctype.h"
main()
{
char frase[80];
int cont1;
44
FUNDAMENTOS DE PROGRAMACIÓN. APUNTES
Su sintaxis es la siguiente:
tipo nombre [tamaño 1][tamaño 2]...;
m Array
Por ejemplo:
m[1][1]=4;
m[0][2]=7;
m Array
#include <stdio.h>
main() /* Rellenamos una matriz */
{
int x,i,numeros[3][4];
/* rellenamos la matriz */
for (x=0;x<3;x++)
for (i=0;i<4;i++)
scanf("%d",&numeros[x][i]);
/* visualizamos la matriz */
for (x=0;x<3;x++)
for (i=0;i<4;i++)
printf("%d",numeros[x][i]);
getchar();
getchar();
45
FUNDAMENTOS DE PROGRAMACIÓN. APUNTES
int numeros[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; o
int numeros[3][4]={{1,2,3,4}
{5,6,7,8}
{9,10,11,12}};
numeros
columna 0 columna 1 columna 2 columna 3
Fila 0 1 2 3 4
Fila 1 5 6 7 8
Fila 2 9 10 11 12
.
Arrays de cadenas de caracteres
m0
m1
m2
...
Char dias[7][10]={"lunes","martes","miércoles","jueves","viernes","sábado","domingo"};
printf("%s",dias[i]);
46
FUNDAMENTOS DE PROGRAMACIÓN. APUNTES
Tabla desordenada
Tabla ordenada
Búsqueda lineal
Se recorrerá toda la tabla desde el primer
elemento hasta el último si los elementos de la
tabla son menores que el elemento a encontrar.
Si el elemento de la tabla es mayor que el
elemento a encontrar, sabemos, que a partir de
ahí en adelante no estará ya que la tabla esta
ordenada. La búsqueda termina.
izq = 0;
der = n-1; /* n=numero elementos de la tabla */
mit= int((izq+der)/2);
while ((num != tabla[mit])) && (izq<der))
{
if (num> tabla[mit]) izq=der+1;
else der = mit-1;
mit= int((izq+der)/2);
}
if (num == tabla[mit])
{
printf("El numero %d se encuentra en la posicion “,tabla[mit],mit);
} }
else printf("No se encuentra en la tabla.\n");
47
FUNDAMENTOS DE PROGRAMACIÓN. APUNTES
4.6 FUNCIONES DE C
En C hay una función que realiza esta ordenación sin tener que
implementarla, llamada bsearch (incluida en stdlib.h):
bsearch(valor,nombre_array,numero,tamaño,nom_func)
48
FUNDAMENTOS DE PROGRAMACIÓN. APUNTES
También hay una función que realiza la ordenación sin tener que
implementarla, llamada qsort (incluida en stdlib.h):
qsort(nombre_array,numero,tamaño,función);
#include <stdlib.h>
#include <stdio.h>
main()
{
int i, num;
int lista[ELEMENTOS], *elementoPtr;
/* Contenido aleatorio */
for(i = 0; i < ELEMENTOS; i++) lista[i] = rand() % 100 + 1;
/* Quick-Sort */
qsort(lista, ELEMENTOS, sizeof(lista[0]), comparar);
49
FUNDAMENTOS DE PROGRAMACIÓN. APUNTES
50