TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · Tipos de Datos Compuestos Estáticos en C 2 UNIDAD 5:...

22
TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C

Transcript of TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · Tipos de Datos Compuestos Estáticos en C 2 UNIDAD 5:...

TIPOS DE DATOS COMPUESTOS ESTÁTICOS

EN C

Tipos de Datos Compuestos Estáticos en C

2

UNIDAD 5: ARRAYS (listas y tablas) EN C 5.1 INTRODUCCIÓN Arreglo: Un Arreglo es una estructura de datos que almacena bajo el mismo nombre (variable) a una colección de datos del mismo tipo. Los arreglos se caracterizan por: ♦ Almacenan los elementos en posiciones contiguas de memoria. ♦ Tienen un mismo nombre de variable que representa a todos los elementos. ♦ Para hacer referencia a esos elementos es necesario utilizar un índice que especifica el

lugar que ocupa cada elemento dentro del archivo. Un array (lista o tabla) es una colección de datos del mismo tipo que se referencian por un nombre común. Los datos se llaman elementos del array y se numeran consecutivamente 0, 1, 2, 3, etc. El tipo de elementos almacenados en el array puede ser cualquier tipo de dato C, incluyendo estructuras definidas por el usuario. Normalmente el array se utiliza para almacenar tipos tales como char, int o float. Cada ítem del array se denomina elemento. Los elementos de un array se numeran consecutivamente 0, 1, 2, 3... Estos números se denominan valores índice o subíndice del array. El término “subíndice” se utiliza ya que se especifica igual que en matemáticas, como una secuencia a0, a1, a2, a3… Estos números localizan la posición del elemento dentro del array, proporcionando acceso directo al array. Si el nombre del array es "a", entonces a[0] es el nombre (valor) del elemento que está en la posición 0, a[1] es el nombre (valor) del elemento que está en la posición 1, etc. En general, el elemento i-ésimo está en la posición i-1. De modo que si el array tiene n elementos, sus nombres son a[0], a[1], a[2], …., a[n-1]. Gráficamente se representa así el array “a” de 6 elementos: int a[6]; //Declara un array de 6 elementos enteros

Figura: Array de 6 elementos.

El array tiene 6 elementos: a[0] contiene 5, a[1] contiene 8, a[2] contiene 6, a[3] contiene 10, a[4] contiene 9, a[5] contiene 4. En un array sus elementos se almacenan siempre en una secuencia de posiciones de memoria contiguas. En C los índices de un array siempre tiene como límite inferior 0, como índice superior el tamaño del array menos 1. 5.2 DEFINICIÓN Y DECLARACIÓN DE ARRAYS EN C Al igual que con cualquier tipo de variable, se debe declarar un array antes de utilizarlo. Un array se declara de forma similar a otros tipos de datos, excepto que se debe indicar al compilador el tamaño o longitud del array. La sintaxis para declarar un array es simple:

tipo nombreArray [numerodeElementos];

Tipos de Datos Compuestos Estáticos en C

3

Siendo: ♦ tipo: El tipo de los elementos que conformarán el array. ♦ nombreArray: El nombre de nuestro array . ♦ numerodeElementos: Un número entero mayor que cero que indica el tamaño del

array. Ejemplos: int array1[100]; /* Declara un array de 100 elementos enteros */ char array2[15]; /* Declara un array de 15 caracteres */ Si por ejemplo, se quiere crear un array de números reales y su tamaño es una constante representada por un parámetro: #define NE 20 float array[NE]; Para acceder al elemento 3 y leer un valor de entrada del array: scanf(“%f”,&array[2]); 5.2.1 SUBÍNDICES DE UN ARRAY El índice de un array se denomina, con frecuencia, subíndice del array. El término procede de las matemáticas, en las que un subíndice se utiliza para representar un elemento determinado. int numeros[4]; numeros0 equivale a numeros[0] numeros1 equivale a numeros[1] numeros2 equivale a numeros[2] numeros3 equivale a numeros[3] El método de numeración del elemento i-ésimo con el índice o subíndice i-1 se denomina indexación basada en cero. Su uso tiene el efecto de que el índice de un elemento del array es siempre el mismo que el número de pasos desde el elemento inicial numeros[0] a ese elemento. Por ejemplo, numeros[3] está a 3 pasos o posiciones del elemento numeros[0]. Ejemplos: int edad[5]; /*Array edad; contiene 5 elementos: el primero edad[0] y el último edad[4] */ int pesos[25], longitudes[100]; // Declara dos arrays de enteros float salarios[25]; //Declara un array de 25 elementos float double temperaturas[50]; //Declara un array de 50 elementos double char letras[15]; //Declara un array de caracteres 5.2.2 ALMACENAMIENTO EN MEMORIA DE LOS ARRAYS Los elementos de los arrays se almacenan en bloques contiguos. Así por ejemplo, los arrays: int edades[5]; char codigos[5];

Tipos de Datos Compuestos Estáticos en C

4

Ejemplo: char ciudad[]= “Leon”; A tener en cuenta, en las cadenas de caracteres el sistema siempre inserta un último carácter (nulo, ‘\0’) para indicar el fin de cadena. 5.2.3 INICIALIZACIÓN DE UN ARRAY Se deben asignar valores a los elementos del array antes de utilizarlos, tal como se asignan valores a variables. Para asignar valores a cada elemento del array de enteros “edades”, se puede escribir: edades [0] = 15; edades [1] = 25; edades [3] = 30; edades [4] = 35; La primera sentencia fija edades[0] al valor 15, precios[1] al valor 25, etc. Sin embargo, este método no es práctico cuando el array contiene muchos elementos. El método utilizado, normalmente, es inicializar el array completo en una sola sentencia. Cuando se inicializa un array, el tamaño del array se puede determinar automáticamente por las constantes de inicialización. Estas constantes se separan por comas y se encierran entre llaves, como en los siguientes ejemplos: int numeros[6] = {10, 20, 30, 40, 50, 60}; int n[ ]= {3, 4, 5}; //Declara un array de 3 elementos char c[ ] = {‘L’,’u’,’i’,’s’}; //Declara un array de 4 elementos En C los arrays de caracteres, las cadenas, se caracterizan por tener un carácter final que indica el fin de la cadena, es el carácter nulo. Lo habitual es inicializar un array de caracteres (una variable cadena) con una constante cadena. char cad [ ] = “Hola mundo”;

ciudad

[0]

[1]

[2]

[3]

L

e

o

n

\0

Tipos de Datos Compuestos Estáticos en C

5

El método de inicializar arrays mediante valores constantes después de su definición es adecuado cuando el número de elementos del array es pequeño. Por ejemplo, para inicializar un array de 10 enteros a los valores de 10 a 1 y visualizar dichos valores en un orden inverso, se puede escribir: Por ejemplo, para inicializar todos los valores del array edades al valor 0, se puede utilizar el siguiente programa: Ejemplo #1: /*Programa para inicializar un array de 10 elementos enteros a 0*/ //inicializar.c #include<stdio.h> void main() { int edades[10],i; for(i=0;i<=9;i++) edades[i]=0; printf("Elemento\tValor\n"); printf("--------\t------"); for(i=0;i<=9;i++) printf("\n%d\t\t%d\n",i,edades[i]); } Salida:

Ejemplo #2: /*Programa que imprime los números del 1 al 10 en orden descendente*/ #include<stdio.h> void main() { int i,cuenta[10]={1,2,3,4,5,6,7,8,9,10}; for( i=9;i>=0;i--) printf("\n ELEMENTO[%d]: %d\n", i, cuenta[i]); } Salida:

Tipos de Datos Compuestos Estáticos en C

6

Se pueden asignar constantes simbólicas como valores numéricos, de modo que las sentencias siguientes son válidas: #define ENE 31 #define FEB 28 #define MAR 31 …… int meses [12] = {ENE, FEB, MAR, ABR, MAY, JUN, JUL, JUL, AGO, SEP, OCT, NOV, DIC}; Pueden asignarse valores a un array utilizando un bucle for o while/ do-while y éste suele ser el sistema más empleado normalmente. Ejemplo #3: /* Programa que lee 8 números enteros y visualiza la suma de los números */ #include<stdio.h> #define NUM 8 void main() {

int num[NUM]; int i, total=0; for(i=0;i<NUM;i++) { printf("Introduzca el numero[%d]: ",i); scanf("%d",&num[i]); } printf("\n\nLISTA DE NUMEROS LEIDOS:"); for(i=0;i<NUM;i++) {

printf("%d ",num[i]); total += num[i];

} printf("\n\nLA SUMA DE LOS %d NUMEROS ES: %d\n",NUM,total);

} Salida:

Tipos de Datos Compuestos Estáticos en C

7

Ejemplo #4: /* Programa que imprime histogramas/ #include<stdio.h> #define TAM 10 void main() { int n[TAM]={3,5,7,9,11,13,15,17,19,21}; int i,j; printf("Elemento\tValor\t\tHistograma\n"); for(i=0;i<=TAM-1;i++) { printf(" %d\t\t%d",i,n[i]); for(j=1;j<=n[i];j++) printf("%c",'*'); printf("\n"); } } Salida:

Ejemplo #5: Realizar un programa en C que almacene 50 números enteros en un array, luego imprimir los valores del array en orden inverso. //arrayinverso.c #include<stdio.h> #include<stdlib.h> void main() { int datos[50]; int i,j; for(i=0;i<10;i++) { printf("DATO[%d]: ",i+1); scanf("%d",&datos[i]); } printf("\n\n***VECTOR ORIGINAL***\n\n"); for(j=0;j<10;j++) { printf("%d| ",datos[j]); } printf("\n\n***ELEMENTOS DEL ARRAY EN ORDEN INVERSO***\n\n"); for(j=9;j>=0;j--) {

Tipos de Datos Compuestos Estáticos en C

8

printf("%d| ",datos[j]); } } Ejemplo de Salida:

Ejemplo #6: Realice un programa en C que declare una array de enteros de 20 elementos, imprimir la posición y el valor del elemento mayor almacenado en el vector. Suponga que todos los elementos del vector son diferentes. //mayorpos.c #include<stdio.h> void main() { int datos[20]; int i=1,j=1,pos,may; for(i=1;i<=10;i++) { printf("DATO[%d]: ",i); scanf("%d",&datos[i]); } may=datos[0]; for(j=1;j<=10;j++) { if(datos[j]>may) { may=datos[j]; pos=j; } } printf("\nEL MAYOR ES: %d Y SE ENCUENTRA EN LA POSICION:%d\n\n",may,pos); } Salida:

Tipos de Datos Compuestos Estáticos en C

9

Ejemplo #7: Realizar un programa que almacene 10 valores en un vector, imprimir cuántos son ceros, cuántos son negativos, cuántos positivos. Imprimir además la suma de los números negativos y la suma de los positivos. //ncerosposneg.c #include<stdio.h> void main() { int array[100],i; int nelem,ncero=0,nneg=0,npos=0,sum_pos=0,sum_neg=0; printf("Cuantos datos: "); scanf("%d",&nelem); for(i=0;i<nelem;i++) { printf("\nELEMENTO[%d]: ",i+1); scanf("%d",&array[i]); if(array[i]>0) { npos++; sum_pos = sum_pos + array[i]; } else if(array[i]<0) { nneg++; sum_neg = sum_neg + array[i]; } else ncero++; } printf("\n\n\t***DATOS DEL ARRAY***\n\n");

for(i=0;i<nelem;i++) { printf(" %d ",array[i]); } printf("\n\n\nHAY %d (0) EN EL ARRAY\n\n",ncero); printf("\nHAY %d NUMEROS POSITIVOS EN EL ARRAY\n\n",npos); printf("\nHAY %d NUMEROS NEGATIVOS EN EL ARRAY\n\n",nneg); printf("\nLa suma de los %d numeros positivos es: %d\n\n",npos,sum_pos); printf("\nLa suma de los %d numeros negativos es: %d\n\n",nneg,sum_neg); }

Tipos de Datos Compuestos Estáticos en C

10

Salida:

5.2.4 ARRAY DE CARACTERES Y CADENAS DE TEXTO Una cadena de texto es un conjunto de caracteres, tales como: “Programación”. C soporta cadenas de texto utilizando un array de caracteres que contenga una secuencia de caracteres: ♦ char Cadena[]=”Programacion”; Es importante comprender la diferencia entre un array de caracteres y una cadena de caracteres. Las cadenas contienen un carácter nulo al final del array de caracteres.

Array de Caracteres Cadena Las cadenas se señalan incluyendo un carácter final de la cadena; el carácter nulo (\0), cuyo valor en el código ASCII es 0. el medio más fácil de inicializar un array de caracteres es hacer la inicialización de la declaración: ♦ char Cadena[13]=”Programacion”;

Cadena[0] P Cadena[1] r Cadena[2] o Cadena[3] g Cadena[4] r Cadena[5] a Cadena[6] m Cadena[7] a Cadena[8] c Cadena[9] i Cadena[10] o Cadena[11] n Cadena[12] \0 Carácter Nulo

Cadena[0] P Cadena[1] r Cadena[2] o Cadena[3] g Cadena[4] r Cadena[5] a Cadena[6] m Cadena[7] a Cadena[8] c Cadena[9] i Cadena[10] o Cadena[11] n

Tipos de Datos Compuestos Estáticos en C

11

El compilador añade automáticamente un carácter nulo al final de la cadena, de modo que la secuencia real sería: ♦ char Cadena[13]=”Programacion”; Cadena La asignación de valores a Cadena se puede hacer del modo siguiente: Cadena[0]= P' Cadena[1]= r' Cadena[2]= o' Cadena[3]= g' Cadena[4]= r' Cadena[5]= a' Cadena[6]= m' Cadena[7]= a' Cadena[8]= c' Cadena[9]= i' Cadena[10]= o' Cadena[11]= n' Cadena[12]= \0' Ejemplo #8: Escribe un programa en C que cuente el número el número de veces que aparece un carácter c en una cadena de caracteres. //cuentacaracteres.c #include <stdio.h> #define DIM 30 void main () { int i, numero; char cadena[DIM]; char caracter; printf ("QUE CARACTER DESEA BUSCAR: "); scanf ("%c",&caracter); printf ("\n\nINTRODUZCA LA CADENA DE CARACTERES: "); scanf ("%s", cadena); for (i=0,numero=0;cadena[i]!=0;i++) if (cadena[i]==caracter) numero++; printf ("\n\nEL CARACTER %c APARECE %d VECES EN LA CADENA: %s\n",caracter,numero,cadena); }

P r o g r a m a c i o n \0

Tipos de Datos Compuestos Estáticos en C

12

Salida:

5.3 ARRAYS MULTIDIMENSIONALES Los arrays multidimensionales son aquellos que tienen más de una dimensión y en consecuencia, más de un índice. Los arrays más usuales son los de dos dimensiones, conocidos también por el nombre de tablas o matrices. Sin embargo, es posible crear arrays de tantas dimensiones como requieran sus aplicaciones. Un array de dos dimensiones equivale a una tabla de múltiples filas y múltiples columnas.

Estructura de un array de dos dimensiones.

Si las filas se etiquetan de 0 a m y las columnas de 0 a n, el número de elementos que tendrá el array será el resultado del producto (m+1) x (n+1). El sistema para localizar un elemento será por las coordenadas representadas por el número de fila y su número de columna (a, b). La sintaxis para la declaración de un array de dos dimensiones es: <tipo de datoElemento> <nombre array>[<Número de Filas>] [<Número de Columnas>] Ejemplos de declaración de tablas: char Pantalla[25][80]; int puestos[6][8]; int equipos[4][30]; int matriz[4][2]; Un array de dos dimensiones en realidad es un array de arrays. Es decir, es un array unidimensional y cada elemento no es un valor entero, o de coma flotante o carácter, sino que cada elemento es otro array. Los elementos de los arrays se almacenan en memoria de modo que el subíndice más próximo al nombre del array es la fila y el otro subíndice, la columna.

Tipos de Datos Compuestos Estáticos en C

13

5.3.1 INICIALIZACIÓN DE ARRAYS MULTIDIMENSIONALES Los arrays multidimensionales se pueden inicializar, al igual que los de una dimensión, cuando se declaran. La inicialización consta de una lista de constantes separadas por comas y encerradas entre llaves. Ejemplos: int tabla [2] [3] = {51, 52, 53, 54, 55, 56}; O bien: ♦ int tabla [2] [3] = { {51, 52, 53}, {54, 55, 56}}; ♦ int tabla [2] [3] = { {51, 52, 53}, {54, 55, 56}}; ♦ int tabla [2] [3] = {

{51, 52, 53}, {54, 55, 56}

}; ♦ int tabla2 [3] [4] = { {1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}}; 5.3.2 ACCESO A LOS ELEMENTOS DE LOS ARRAYS MULTIDIMENSIONALES Se puede acceder a los elementos de arrays multidimensionales de igual forma que a los elementos de un array unidimensional. La diferencia reside en que en los elementos bidimensionales deben especificarse los índices de la fila y la columna. El formato general para asignación directa de valores a los elementos es: ♦ Inserción de elementos <Nombre array> [índice fila] [índice columna] = valor elemento; ♦ Extracción de elementos: <Variable> = <nombre array> [índice fila] [índice columna];

Tipos de Datos Compuestos Estáticos en C

14

5.3.3 LECTURA Y ESCRITURA DE ELEMENTOS DE ARRAYS BIDIMENSIONALES Las funciones de entrada o salida se aplican de igual forma a los elementos de un array bidimensional. Por ejemplo: int tabla [3] [4]; double resistencias [4] [5]; scanf(“%d”, &tabla[2] [3]); printf(“%d”, tabla[1] [1]); scanf(“%lf”,&resistencias [2] [4]); if( asientosLibres [3] [1]) puts(“VERDADERO”); else puts(“FALSO”); 5.3.4 ACCESO A ELEMENTOS MEDIANTE BUCLES Se puede acceder a los elementos de arrays bidimensionales mediante bucles anidados. Su sintaxis es: int indicefila, indicecolum; for(indicefila = 0; indicefila < NumFilas; ++indicefila)

for(indicecolum = 0; indicecolum < NumCol; ++indicecolum) Procesar Elemento [indicefila] [indicecolum]; Ejemplo #9: //Lectura y Visualización de un array de dos dimensiones (3 Filas y 5 Columnas) #include<stdio.h> void main() { int a[3][5]; int i,j; printf("Introduzca 15 numeros enteros(5 x fila)\n"); for(i=0;i<3;i++) { printf("\nFila[%d]:\n ",i); for(j=0;j<5;j++) scanf("%d ",&a[i][j]); } //Visualiza datos del array bidimensional printf("\n***Visualizacion del Array***\n"); for(i=0; i<3; i++) { printf("\nFila [%d]: ",i); for(j=0;j<5;j++) printf("%d ",a[i][j]); printf("\n"); } }

Tipos de Datos Compuestos Estáticos en C

15

Salida:

Ejemplo #10: //sumafilas.c /*Este programa realiza la suma de las filas de una matriz bidimensional*/ include<stdio.h> #define MAXF 10 #define MAXC 10 void main() { float a[MAXF][MAXC]; float sumafil; int fil,col,f,c; do { printf("NUMERO DE FILAS: "); scanf("%d",&fil); }while(fil < 1 || fil > MAXF); do { printf("NUMERO DE COLUMNAS: "); scanf("%d",&col); }while(col < 1 || col > MAXC); //Lectura de los datos de la matriz printf("\n\n**Introduzca los datos de la matriz**\n"); for(f=0;f<fil;f++) for(c=0;c<col;c++) { printf("M[%d][%d]: ",f,c); scanf("%f",&a[f][c]); } //Escribir la suma de cada fila for(f=0;f<fil;f++) { sumafil=0; for(c=0;c<col;c++) sumafil += a[f][c]; printf("La suma de la fila [%d] es %.2f\n",f,sumafil);

Tipos de Datos Compuestos Estáticos en C

16

} } Ejemplo de Salida:

Ejemplo #11: Realizar un programa que almacene números en una matriz de 2 * 3. Imprimir la suma de los números almacenados en la matriz. //sumabidimensional.c #include<stdio.h> #include<stdlib.h> void main() { int matriz[2][3],suma=0,f,c; for(f=0;f<2;f++) { for(c=0;c<3;c++) { printf("Elemento[%d][%d]: ",f,c); scanf("%d",&matriz[f][c]); suma = suma+matriz[f][c]; } } printf("\nLa suma de la matriz es: %d\n", suma); } Salida:

Tipos de Datos Compuestos Estáticos en C

17

Ejemplo #12: Hacer un programa que lea una matriz de 3*2 y determine la posición [fila, columna] del número mayor almacenado en la matriz. Suponga que los datos introducidos son diferentes. //mayorbidimensional.c #include<stdio.h> #include<stdlib.h> void main() { int matriz[3][2],mayor,f,c,posif,posic; for(f=0;f<3;f++) { for(c=0;c<2;c++) { printf("Elemento[%d][%d]: ",f,c); scanf("%d",&matriz[f][c]); } } mayor=matriz[0][0]; posif=0; posic=0; for(f=0;f<3;f++) { for(c=0;c<2;c++) { if(matriz[f][c]>mayor) { mayor=matriz[f][c]; posif=f; posic=c; } } } printf("\n%d ES EL ELEMENTO MAYOR Y SE ENCUENTRA EN LA POSICION [%d,%d]\n", mayor,posif,posic); } Salida:

Tipos de Datos Compuestos Estáticos en C

18

Ejemplo #13: Diseñar un programa en C que lea una matriz de 3*3. Sumar las columnas e imprimir que columna tuvo la máxima suma y la suma de esa columna. #include<stdio.h> #include<stdlib.h> void main() { int matriz[3][3],sumac,f,c,mayor=0,numc; for(f=0;f<3;f++) { for(c=0;c<3;c++) { printf("Elemento[%d][%d]: ",f+1,c+1); scanf("%d",&matriz[f][c]); } } printf("\n***DATOS DE LA MATRIZ INTRODUCIDA***\n"); for(f=0;f<3;f++) { for(c=0;c<3;c++) { printf(" %d ",matriz[f][c]); } printf("\n"); } for(c=0;c<3;c++) { sumac=0; for(f=0;f<3;f++) { sumac+=matriz[f][c]; } printf("\nSUMA COLUMNA[%d]:%d\n",c+1,sumac); if(sumac>mayor) { mayor=sumac; numc=c; } } printf("\nLa columna con mayor suma es: %d y su valor es: %d\n",numc+1,mayor); }

Tipos de Datos Compuestos Estáticos en C

19

Salida:

Ejemplo #14: Hacer un programa en C que lea una matriz de N filas y M columnas y que almacene en la diagonal principal unos y en las demás posiciones ceros. //diagonal.c #include<stdio.h> #include<stdlib.h> #define MAXF 10 #define MAXC 10 void main() { int matriz[MAXF][MAXC],f,c,nfil,ncol; printf("Introduzca el numero de filas: "); scanf("%d",&nfil); printf("Introduzca el numero de columnas: "); scanf("%d",&ncol); for(f=0;f<nfil;f++) { for(c=0;c<ncol;c++) { if(f==c) matriz[f][c]=1; else matriz[f][c]=0; } } printf("\n***DATOS DE LA MATRIZ INTRODUCIDA***\n"); for(f=0;f<nfil;f++) { for(c=0;c<ncol;c++) { printf(" %d ",matriz[f][c]); } printf("\n");

Tipos de Datos Compuestos Estáticos en C

20

} } Salida:

5.4 ARRAY DE CADENAS DE CARACTERES

Las matrices de cadenas de caracteres son matrices multidimensionales, generalmente de dos dimensiones, en las que cada fila se corresponde con una cadena de caracteres. Una fila será una matriz unidimensional de tipo char o unsigned char.

La definición de una matriz de cadenas de caracteres puede hacerse de la siguiente forma: char nombre_matriz [filas] [longitud_filas];

Ejemplo:

char m [F] [C]; /* Crea un matriz de cadenas de caracteres de F filas por C caracteres cada fila*/

A partir de esta línea de código, C/C++ crea una matriz unidimensional m con los elementos, m[0], m…[1], ……, m[F-1], que a su vez son matrices unidimensionales de C elementos de tipo char.

Gráficamente podemos representarlo así:

El tipo de elementos de m es char[] y el tipo de los elementos de las matrices referenciadas por m [0], m…[1],……, es char.

Para acceder a los elementos de la matriz m, puesto que se trata de una matriz de cadenas de caracteres, se utiliza sólo el primer subíndice, el que indica la fila. Sólo se utiliza dos subíndices cuando sea necesario acceder a un carácter individual.

Es importante remarcar que m[0], m[1], etc, son cadenas de caracteres y que, por ejemplo, m [3] [1] es un carácter; el que está en la fila 1, columna 3.

Tipos de Datos Compuestos Estáticos en C

21

Ejemplo #15:

/*Programa para leer una lista de nombres y los almacene en una matriz. Una vez construida, visualiza su contenido.*/

#include<stdio.h> #include<stdlib.h> #define FIL 100 #define COL 80 void main() { char nombre[FIL][COL]; int nf=0,f; char *fin,resp; do { printf("Introduzca el numero de filas: "); scanf("%d",&nf); }while(nf<1 || nf>FIL); fflush(stdin); printf("Escriba los nombres que desea introducir: "); printf("Finalice pulsando las teclas [Ctrl][Z].\n"); for(f=0;f<nf;f++) { printf("Nombre[%d]: ",f); fin=gets(nombre[f]); //Si se pulso [Ctrl][Z,salir del bucle if(fin== NULL) break; } nf= f; do { printf("Desea visualizar el contenido de la matriz? (s/n)"); resp= tolower(getchar()); }while(resp != 's' && resp != 'n'); if(resp == 's') { //Visualizar la lista de nombres printf("\n"); for(f=0;f<nf;f++) printf("%s\n",nombre[f]); } }

Tipos de Datos Compuestos Estáticos en C

22

Salida:

BIBLIOGRAFÍA BÁSICA

♦ Ceballos, Francisco Javier: C/C++ Curso de Programación, 2da Edición. Editorial RA-MA, 2002.

♦ Joyanes Aguilar, Luis; Zahonero Martínez Ignacio: Programación en C. McGraw Hill, 2001.

♦ Gottfried, Byron S: Programación en C. McGraw Hill, 1991.