PDF de programación - Arrays - Programación en C

Imágen de pdf Arrays - Programación en C

Arrays - Programación en Cgráfica de visualizaciones

Publicado el 11 de Junio del 2019
1.171 visualizaciones desde el 11 de Junio del 2019
379,2 KB
54 paginas
Creado hace 15a (26/03/2009)
Arrays

Programación en C

1

Índice

• Definición.

• Asignación.

• Arrays multidimensionales.

• Cadenas de caracteres - Strings.

• Funciones para el manejo de caracteres.

• Funciones para el manejo de strings.

Programación en C

2

Arrays - definición

• Un array es una estructura de datos que representa un

conjunto de variables del mismo tipo declaradas como una
sóla entidad.

• Un array tiene un tipo y tamaño:

– El tipo especifica el tipo de valor almacenado en cada elemento del

array.

– El tamaño o dimensión especifica cuántos elementos se almacenan

en el array. Los índices de un array en C empiezan en 0.

• Sintaxis de definición de arrays:

tipo_dato nombre_array[expresión_entera]; /*unidimensional*/

tipo_dato nomb_array[exp1] [exp2]...[expn]; /*multidimensional*/

Programación en C

3

Ejemplos de definición de arrays

int a[100]; /* Vector de 100 enteros */

char texto[80]; /* Cadena de 80 caracteres */

float vel_x[30]; /* Vector de 30 reales */

float vx[4][4]; /* Matriz de 4x4 reales */

int pto3d_t[10][10][10][10]; /* Matriz de

4 dimensiones (10 c/dim)de reales */

• Es habitual y recomendable la siguiente construcción:

#define DIMENSION 100


float vel_x[DIMENSION]; /* Vector de reales */

Programación en C

4

Arrays

• Cuando se define un array, el compilador separa un conjunto

de posiciones contiguas de memoria.

• El contenido inicial de un array es indefinido (valores basura).

• Ejm: int a[10];

elemento

dirección

contenido

a[0]

a[1]

a[2]

…..

a[9]

0F00

0F02

0F04

…..

0F12

Programación en C

5

Arrays - asignación

• Se pueden asignar valores a los elementos individuales del

array accediendo a cada elemento mediante el índice del
array.

• Ejm: int a[10];

elemento

dirección

contenido

a[0] = 1;

a[1] = 5;

a[2] = 120;

....

a[0]

a[1]

a[2]

…..

a[9] = a[2] + a[1];

a[9]

0F00

0F02

0F04

…..

0F12

1

5

120

121

Programación en C

6

Arrays – definición e inicialización

• Los arrays pueden inicializarse en el momento de su

definición.

• Ejm:

dimensión = 10

int a[ ] = { 1, 2, 5, 3, 4, 10, 8, 9, 7, 10 };
float x[ 6 ] = { 0, 0.32, 1.414, 2.7172, 3.1415, 5.4 };
char color[ 4 ] = { ‘R’, ‘O’, ‘J’, ‘O’ };

• Es un error colocar más elementos que los de la dimensión

del array. Si se colocan menos elementos, los demás
elementos se inicializan a cero.

• Si un array no se dimensiona y se inicializa durante su

definición, el compilador le asigna una dimensión según el
número de elementos iniciales.

Programación en C

7

Arrays multidimensionales

• Un array multidimensional se define con corchetes
consecutivos. La forma general de su definición es:
tipo_dato nombre_array[dim1][dim2]. . .[dimN];

• Un array multidimensional se almacena como una

secuencia de elementos unidimensionales. Se
considera como un array de arrays.

• Si asignan valores en la definición ésta se realiza

variando el último índice más rapidamente.

• Ejm:

int matriz[ 2 ][ 3 ] = { { 0, 1, 2}, { 3, 4, 5} };

Programación en C

8

Ejemplo 1: frecuencia de ocurrencia dígitos

/************************************************************************\
* Programa: frec_ocurr_digitos.c
*
* Descripción: Prog. que cuenta la frecuencia de ocurrencia de digitos *
* Autor: Pedro Corcuera
*
* Revisión: 1.0 2/02/2008 *
\************************************************************************/
#include <stdio.h>

main()
{

int c,i;
int ndigit[10] = { 0}; /* Inicializacion express del array */

printf ("Escribe numeros y pulsa Enter. Para terminar Ctrl-Z Enter\n");
while ((c=getchar())!=EOF)

if (c>='0' && c<='9') /* Si c es un digito */

++ndigit[c-'0']; /* incrementa el contador del digito c-’0’ */

printf("Frecuencia de ocurrencia de digitos \n");
for (i=0; i<10 ; ++i)

printf(" %d = %d\n", i, ndigit[i]);

return 0;

}

Programación en C

9

Ejemplo 2: adivina números

/************************************************************************\
* Programa: busq_binaria.c
*
* Descripción: Prog. que genera N numeros random y permite que el *
* usuario adivine si esta un numero. Ordena por burbuja *
* y usa busqueda binaria
\************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

*

#define N 10

main()
{

int lista[N], num, encontrado;
int i, j, t;
int izq, der, mitad;

/* Crea lista de valores random entre 0 y 100.

rand() devuelve un numero random entre 0 y RAND_MAX */

srand( (unsigned)time( NULL ) ); /* semilla para random */
for( i = 0; i < N;i++ )

lista[i] = (float)rand()/RAND_MAX*100;

Programación en C

10

Ejemplo 2: adivina números

/* Ordenacion por metodo de burbuja para aplicar busqueda binaria */

for(i = N-1; i > 0 ; i--)

for(j = 0 ; j < i ; j++)

if (lista[j] > lista[j+1])
{ t = lista[j]; lista[j] = lista[j+1]; lista[j+1] = t; }

printf("He generado una lista de 10 numeros enteros entre 0 y 100.\n \

Adivina los numeros de la lista (Para terminar pulsar tecla no digito)\n");

while (scanf(" %d", &num)==1)
{

izq = 0; der = N-1; encontrado = 0;
while (izq <= der)

{

mitad = (izq + der)/2;
if (num < lista[mitad]) der = mitad - 1;
else if (num > lista[mitad]) izq = mitad + 1;
else {

encontrado = 1; printf(" %d si esta\n", num); /* elem. en lista */
break;

}

}
if (encontrado == 0) printf(" %d no esta\n", num); /* no encontrado */

}
return 0;

}

Programación en C

11

Cadenas de caracteres - Strings

• Un string es un tipo especial de array donde cada uno

de los elementos es un carácter.

• Ejm: /* declar. de un string de 10 caracteres */

char cadena[10];

• Cuando se asigna una cadena de caracteres a un

string se usa el caracter nulo '\0' para indicar el final
de la cadena.

• Toda cadena debe usar un elemento de su dimensión

para almacenar el caracter nulo, por tanto la
dimensión efectiva se reduce en uno.

Programación en C

12

Strings – Definición e inicialización

• Para inicializar un string durante su definición se usan

constantes de tipo cadena.

• Ejm:
char cad[6] = {'P','e','p','e',' ','\0'};

char cad[6] = “Pepe ”; /* con dimensión */

char cad[ ] = “Pepe ”; /* dimensión autom */
char n[] = “Chema”;

n

C

h

e

m

a

\0

n[0] n[1] n[2] n[3] n[4] n[5] Carácter

Programación en C

nulo

13

Asignación de Strings

• Los strings no pueden asignarse. Por tanto, la

asignación de strings por medio del operador (=) sólo
es posible en la definición e inicialización del string .

• Ejemplo:

char n[50]=“Chema”; /* Correcto */

n=“Otro nombre”; /* Error: no es posible */

• C dispone de una serie de funciones para manipular

strings, que se encuentran en la librería <string.h>

Programación en C

14

Lectura de Strings

• Mediante scanf() y gets(). Con sscanf() se lee desde un string.
• Ej:

#define MAX_STRING 128

char cadena[MAX_STRING];
float x; int n;

scanf(“%s”, cadena);

gets(cadena);

sscanf(cadena, “%f %d”, &x, &n); /* lee desde string */

Programación en C

15

Funciones para el manejo de caracteres

• Las funciones para el manejo de caracteres se encuentran en la librería

<ctype.h>

Función

Descripción*

Función

Descripción*

isalnum(c)

(A-Z o a-z) o (0-9)

isprint(c)

Imprimibles incluido ' '

isalpha(c)

(A - Z o a - z)

ispunct(c)

Signos de puntuación

isascii(c)

0 - 127 (0x00-0x7F)

isspace(c)

espacios, (0x09-0x0D,0x20).

iscntrl(c)

(0x7F o 0x00-0x1F)

isupper(c)

(A-Z)

isdigit(c)

(0 - 9)

isxdigit(c)

(0 to 9, A to F, a to f).

isgraph(c)

Imprimibles menos ' '

tolower(c)

convierte c a minúscula

islower(c)

(a - z)

toupper(c)

convierte c a mayúscula

* Las funciones que empiezan por is.. devuelven 1 si c está en el rango especificado

Programación en C

16

Funciones para el manejo de strings

• Las funciones para el manejo de cadenas de

caracteres se encuentran en la librería <string.h>
Función

Descripción

strcpy( s1, s2)

copia la cadena s2 en la cadena s1

strcat( s1, s2)
strcmp(s1, s2)

.

strlen(s)

strcoll(s1, s2)

añade la cadena s2 al final de s1

compara s1 y s2. dev: 0 si s1=s2, num.pos. si s1>s2,
num.neg si s1<s2.

devuelve número de caracteres en la cadena s.
idéntico a strcmp numero positivo.

strxfrm( s1, s2, n)

guarda en s1 los n caracteres comparados con s2

strncpy( s1, s2, n)

copia n caracteres de s2 en la cadena s1

Programación en C

17

Funciones para el manejo de strings

Función

Descripción

strncat( s1, s2, n)

añade n caracteres de s2 al final de s1

strncmp(s1, s2, n)

igual que strcmp pero con n caracteres de s2

strchr(s, c)

strrchr(s, c)

strstr(s1, s2)

busca el primer elemento de s igual a c

busca el último elemento de s igual a c

busca la secuencia s2 en s1

strspn(s1, s2)

busca el primer elemento de s1diferente de s2

strcspn(s1, s2)

busca el 1er elem. en s1 igual a alguno de s2

strpbrk(s1, s2)

busca el 1er elem. en s1 igual a alguno de s2

strtok( s1, s2)

similar a strpbrk, se usa para partir cadenas

strerror( errcode)

devuelve un puntero al mensaje con código errcode

Programación en C

18

Ejemplo1: frecuencia de ocurrencia letras

/************************************************************************\
* Programa: frecuencia_letras.c
*
* Descripción: Prog. que cuenta la frecuencia de ocurrencia de letras *
\************************************************************************/
#include <stdio.h>
#include <ctype.h>
#define N_LETRAS 27 /* incluye la ñ */

main()
{

int c,i, nletras[N_LETRAS] = { 0};

printf ("Introduce texto y pulsa Enter. Para terminar Ctrl-Z Enter\n");
while ((c=getchar())!=EOF)

if (isalpha(c)) {

if (isupper(c)) c = tolower(c);

++nletras[c-'a'];

}
else if (c == 164 || c == 165) ++nletras[26]; /* para la ñ */

printf("Frecue
  • Links de descarga
http://lwp-l.com/pdf16096

Comentarios de: Arrays - Programación en C (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad