tipos de datos compuestos estÁticos en c · un array (lista o tabla) es una colección de datos...

38
Asignatura: PROGRAMACIÓN ESTRUCTURADA 2012 TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C A UTOR : I NG . K ARINA E SQUIVEL

Upload: vandang

Post on 20-Sep-2018

231 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Asignatura: PROGRAMACIÓN ESTRUCTURADA

2012

TIPOS DE DATOS

COMPUESTOS ESTÁTICOS EN C

A U T O R : I N G . K A R I N A E S Q U I V E L

Page 2: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

2

ARRAYS (listas y tablas) EN C � 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: ♦ Almacenar 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.

Page 3: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

3

En C los índices de un array siempre tiene como límite inferior 0, como índice superior el tamaño del array menos 1.

� 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]; 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. Declaración de arrays (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]); Por ejemplo, para crear un array (lista) de diez variables enteras, se escribe: int numeros[10]; Esta declaración hace que el compilador reserve espacio suficiente para contener diez valores enteros. En C los enteros ocupan, normalmente, 2 bytes, de modo que un array de diez enteros ocupa 20 bytes de memoria. Precaución: C no comprueba que los índices del array están dentro del rango definido. Así, por ejemplo, se puede intentar acceder a numeros [12] y el compilador no producirá ningún error, lo que puede producir un fallo en su programa, dependiendo del contexto en que se encuentre el error.

Page 4: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

4

� 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 � 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];

Precaución: C permite asignar valores fuera de rango a los subíndices. Se debe tener cuidado no hacer esta acción, debido a que se sobreescribirían datos o código. Los arrays de caracteres funcionan de igual forma que los arrays numéricos, partiendo de la base de que cada carácter ocupa normalmente un byte. Así, por ejemplo, un array llamado ciudad se puede representar de la siguiente manera:

Page 5: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

5

Ejemplo: char ciudad[]= “Leon”; Es importante tomar en cuenta que en las cadenas de caracteres el sistema siempre inserta un último carácter (nulo, ‘\0’) para indicar el fin de cadena.

� 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, edades[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. Ejemplo: int edades[4]={15,25,30,35}; 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 las cadenas de caracteres, se caracterizan por tener un carácter final que indica el fin de la cadena, es el carácter nulo (‘\0’). Lo habitual es inicializar un array de caracteres (una variable cadena) con una constante cadena. Ejemplo: char cad [ ] = “Hola mundo”;

ciudad

[0]

[1]

[2]

[3]

L

e

o

n

\0

Page 6: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

6

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: Ejemplo #1: Programa que imprime los números del 1 al 10 en orden descendente. //orden_desc.c #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]); } Ejemplo de Salida:

Ejemplo #2: Programa para inicializar un array de 10 elementos enteros a 1. //inicializar.c #include<stdio.h> void main() { int valores[10],i; for(i=0;i<=9;i++) valores[i]=1; printf("Elemento\tValor\n"); printf("--------\t------"); for(i=0;i<=9;i++) printf("\n%d\t\t%d",i,valores[i]); }

Page 7: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

7

Ejemplo de Salida:

� 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, while o do-while y éste suele ser el sistema más empleado normalmente. Ejemplo #3: Programa que lee en un array las edades de un grupo de N estudiantes y visualiza el promedio de edad de dicho grupo. Pseudocódigo: Proceso edad_promedio

Dimension aEdades[5]; sum<-0; prom<-0.0; indice<-1; Mientras indice <= 5 Hacer

Escribir 'Ingrese la edad de la persona ', indice, ': '; Leer aEdades[indice]; indice <- indice + 1;

FinMientras indice<-1; Mientras indice <= 5 Hacer

sum <- sum + aEdades[indice]; indice <- indice + 1;

FinMientras

Page 8: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

8

prom<-sum/5; Escribir 'La edad promedio es: ', prom;

FinProceso Código en Lenguaje C: #include<stdio.h> #include<stdlib.h> void main() { int aEdades[100],indice=1,nest,sum=0; float prom=0.0; printf("\nCUANTOS ESTUDIANTES?"); scanf("%d",&nest); while(indice<=nest) { printf("Ingrese la edad de la persona %d: ",indice); scanf("%d",&aEdades[indice]); indice++; } indice=1; while(indice<=nest) { sum+= aEdades[indice]; indice++; } prom=sum/nest; printf("La edad promedio es:%.f\n",prom); } Ejemplo de Salida:

Page 9: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

9

Ejemplo #4: Programa en C que al recibir como dato un arreglo unidimensional de números reales, obtenga como resultado la suma del cuadrado de los números. //cuadrado_array.c Solución en Pseudocódigo: Proceso cuadrado_array Dimension numeros[10]; sum<-0; indice<-1; Mientras indice <= 10 Hacer Escribir 'Ingrese el numero'; Leer numeros[indice]; cuadrado <- numeros[indice]* numeros[indice]; suma <-suma + cuadrado; indice <- indice + 1; FinMientras Escribir 'La suma de los cuadrados de los ',indice-1,' numeros',' es ',suma; FinProceso Código en Lenguaje C: #include<stdio.h> #include<math.h> void main() { int numeros[10],indice=1,cuadrado,sum=0; while(indice<=10) { printf("Ingrese el numero %d:",indice); scanf("%d",&numeros[indice]); cuadrado=pow(numeros[indice],2); sum+=cuadrado; indice++; } printf("La suma de los cuadrados de los %d numeros es:%d\n",indice-1,sum); }

Page 10: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

10

Ejemplo de Salida:

Ejemplo #5: Programa en C que almacene en un arreglo unidimensional de tipo entero los primeros 10 números primos. Código en Lenguaje C //primos_array.c #include <stdio.h> int main(void) { int n, i,p=0,nprimos[10]; printf("\nLos 10 primeros numeros primos son:\n\n"); /*Se analizarán los números empezando desde 1, 2, 3, etc hasta que se muestren 10 números primos, es decir, hasta que p sea igual a 10*/ for(n=1; ;n++ ) {

/*Para disminuir el número de divisiones debemos empezar en 2 y terminar en un valor igual a la mitad del número analizado. La división por números mayores tendrán un residuo que será siempre mayor a 0*/

for(i=2; i <= n/2; i++) {

/*Si hay algún número dentro del rango 2 a n/2 por el cual n sea divisible, ya no tiene sentido seguir dividiendo porque n ya no sería primo; por lo tanto, se debería salir del lazo*/

if (n%i == 0) break; }

Page 11: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

11

if (i >= n/2+1 ) {

/*Si es que se ha probado con todas las divisiones cuyo divisores están en el rango 2 a n/2, el número será primo y será impreso en la tabla*/

nprimos[p]=n; //Cada vez que se muestra un número primo, se incrementa el contador p p++; if (p==10) //Cuando se cuenta 10 números primos impresos se saldrá del lazo break; } } //Impresión de los números primos for(i=0; i <10; i++) printf("%d -> ",nprimos[i]); return 1; } Ejemplo de Salida:

Ejemplo #6: Realice un programa en C que cree un array de N elementos enteros, cuyos valores “numéricos” se ingresaran por teclado, y luego obtenga la suma y el promedio de los elementos ubicados en las posiciones pares del array. Solución en Pseudocódigo: Proceso pospares Dimension pospares[10]; pospar<-0; sum<-0; Para in<-1 Hasta 10 Con Paso 1 Hacer Escribir 'Ingrese el numero', in; Leer pospares[in]; Si in % 2 = 0 Entonces pospar <- pospar +1; sum <- sum + pospares[in]; FinSi FinPara prom <- sum / pospar; Escribir 'La Suma de los ',pospar, 'que hay en posiciones pares es: ', sum;

Page 12: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

12

Escribir 'El Promedio de los ',pospar, 'que hay en posiciones pares es: ', prom; FinProceso Código en Lenguaje C: #include<stdio.h> #include<math.h> void main() { int pospares[50],in,nelem,pospar=0,sum=0; float prom; printf("Cuantos elementos?"); scanf("%d",&nelem); for(in=0;in<nelem;in++) { printf("Ingrese el numero %d:",in+1); scanf("%d",&pospares[in]); if(in%2==0) { pospar++; sum+=pospares[in]; } } prom=sum/pospar; printf("La suma de los %d numeros que hay en posiciones pares es:%d\n",pospar,sum); printf("El promedio de los %d numeros que hay en posiciones pares es:%.2f\n",pospar,prom); } Ejemplo de Salida:

Page 13: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

13

Ejemplo #7: Realice un programa en C que lea en un array la edad de los N estudiantes de la asignatura de Programación Estructurada, calcule y muestre cual es la edad mínima y máxima. Código en Lenguaje C: //edadmax_min.c #include<stdio.h> void main() { int edades[100],e,nest,emax = 0,emin = 100; printf("Cuantos estudiantes?"); scanf("%d",&nest); for(e=0;e<nest;e++) { printf("Edad[%d]: ",e+1); scanf("%d",&edades[e]); if(edades[e]>emax) emax = edades[e]; if(edades[e]<emin) emin= edades[e]; } printf("\n\t***LISTA DE EDADES***\n"); for(e=0;e<nest;e++) { printf(" %d ",edades[e]); } printf("\n\nLa edad minima es =%d\n",emin); printf("\nLa edad maxima=%d\n\n",emax); } Ejemplo de Salida:

Page 14: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

14

� 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:

� Ejemplo: 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”; 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

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[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

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

Page 15: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

15

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' Sin embargo, no se puede asignar una cadena a un array del siguiente modo: Cadena = "ABCDEF"; Para copiar una constante cadena o copiar una variable de cadena a otra variable de cadena se debe utilizar la función de la biblioteca estándar -posteriormente se estudiará- strcpy( ) («copiar cadenas»). strcpy( ) permite copiar una constante de cadena en una cadena. Para copiar el nombre "karen" en el array nombre, se puede escribir strcpy(nombre, "karen" ) ; /*Copia karen en nombre */ strcpy( ) añade un carácter nulo al final de la cadena. A fin de que no se produzcan errores en la sentencia anterior, se debe asegurar que el array de caracteres nombre tenga elementos suficientes para contener la cadena situada a su derecha. Ejemplo: #include <stdio.h> #include <string.h> #define MAXLON 10 int main(void) {

char original[MAXLON+1] = "cadena"; char copia[MAXLON+1]; strcpy(copia, original); //Copia el contenido de original en copia. return 0;

}

Page 16: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

16

Ejemplo #8: Programa en C que compara las longitudes de dos cadenas de caracteres leídas por teclado, e imprime un mensaje indicando si ambas cadenas tienen o no la misma longitud. Código en Lenguaje C: //longitud.c #include<stdio.h> void main() { char cad1[30],cad2[30]; int c1=0,c2=0; printf("Cadena 1:"); gets(cad1); printf("Cadena 2:"); gets(cad2); while(cad1[c1] != '\0') c1++; while(cad2[c2] != '\0') c2++; printf("\nLa cadena 1 tiene %d caracteres\n",c1); printf("\nLa cadena 2 tiene %d caracteres\n",c2); if(c1==c2) printf("%s y %s tienen LA MISMA LONGITUD\n",cad1,cad2); else printf("%s y %s tienen DIFERENTE LONGITUD\n",cad1,cad2); } Ejemplo de Salida:

Page 17: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

17

Ejemplo #9: Programa en C que permite al usuario introducir una cadena, y determina si la cadena es un palíndromo comprobando la igualdad de los símbolos comenzando por ambos extremos de la cadena. Código en Lenguaje C #include<stdio.h> #include<string.h> void main() { char palabra[30]; int longcad,numc=0,alto=0; printf("Introduzca la cadena:"); scanf("%s",palabra); longcad=strlen(palabra)-1; while((numc<=longcad) && !alto) { if(palabra[numc] != palabra[longcad]) alto=1; numc++; longcad--; } if(!alto) printf("%s es PALINDROMO\n",palabra); else printf("%s NO es PALINDROMO\n",palabra); } Ejemplo de Salida:

Page 18: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

18

Ejemplo #10: Este programa lee una cadena de caracteres y convierte los caracteres de minúscula a mayúscula y viceversa. Código en Lenguaje C //mayuscula_minu.c #include <stdio.h> void main(void) { char texto[20]; int i=0,n,dif; dif = 'a'-'A'; printf("Introduzca una cadena: "); scanf("%s",texto); while (texto[i] != '\0') { if ((texto[i] >='a')&&(texto[i] <='z')) texto[i] -= dif; else if ((texto[i]>='A')&&(texto[i]<='Z')) texto[i] += dif; i++; } texto[i] = '\0'; printf("\n****RESULTADO****\n"); for (n=0; n<=i; n++) { printf("%c", texto[n]); } printf("\n\n"); } Ejemplo de Salida:

Page 19: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

19

Ejemplo #11: Programa en C que pide al usuario ingrese una cadena de caracteres e imprime la cadena sin los signos de puntuación ni los números. Además los caracteres alfabéticos en minúscula se convierten a mayúscula. Código en Lenguaje C //Signos_numeros.c #include<stdio.h> #include<ctype.h> #include<string.h> #include<stdlib.h> void main() { char cadena[50]; int i=0; printf("Introduzca una cadena que incluya digitos y signos de puntuacion:\n"); gets(cadena); while(cadena[i] != '\0') { if((ispunct(cadena[i]) ==0) && (isdigit(cadena[i])==0)) { if((islower(cadena[i])) != 0) cadena[i]= toupper(cadena[i]); printf("%c",cadena[i]); } i++; } } Ejemplo de Salida:

Page 20: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

20

Ejemplo #12: Programa en C que cuenta e imprime las vocales en minúscula y mayúscula de una cadena de caracteres leída por teclado. Código en Lenguaje C: //cuentavocales.c #include <stdio.h> #include <stdio.h> #include <string.h> #define MAXLON 80 int main(void) { char a[MAXLON+1]; int i, longitud,contmin=0,contmay=0; printf ("Introduce una cadena (max. %d caracteres.): ", MAXLON); gets(a); longitud = strlen(a); for (i = 0; i < longitud ; i++) { if (a[i] =='a' || a[i] == 'e' || a[i] == 'i' || a[i] == 'o' || a[i] == 'u') contmin++; if (a[i] =='A' || a[i] == 'E' || a[i] == 'I' || a[i] == 'O' || a[i] == 'U') contmay++; } printf ("***Hay %d Vocales Minusculas***\n", contmin); printf ("***Hay %d Vocales Mayusculas***\n", contmay); return 0; } Ejemplo de Salida:

Page 21: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

21

� 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.

Page 22: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

22

� 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. Ejemplo: int tabla[4][2];

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 tabla2 [3] [4] = { {1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}};

� 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];

Page 23: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

23

� 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”); � 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 < NumColumnas; ++indicecolum) Procesar Elemento [indicefila] [indicecolum]; Ejemplo #13: Lectura y Visualización de un array de dos dimensiones (3 filas y 4 columnas). //arraybidi.c #include<stdio.h> void main() { int i,j,datos[3][4]= {{1,2,3,4}, {5,6,7,8},{9,10,11,12}}; printf("\n***Visualizacion del Array 3F x 4C***\n"); for(i=0; i<3; i++) { for(j=0;j<4;j++) printf("%d ",datos[i][j]); printf("\n"); } }

Page 24: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

24

Ejemplo de Salida:

Ejemplo #14: Programa en C que lee un array bidimensional cuadrado e imprime los elementos de la diagonal principal de dicha matriz. Solución en Pseudocódigo: Proceso imprimirdiagonal Dimension matrizA[3,3]; //arreglo de dos dimensiones (12 elementos) Para f <- 1 Hasta 3 Con Paso 1 Hacer Para c<- 1 Hasta 3 Con Paso 1 Hacer Escribir 'Elemento[',f, ', ',c, ']:'; Leer matrizA[f,c]; //se almacena el elemento FinPara FinPara Escribir "***DATOS DE LA MATRIZ***"; Para f <- 1 Hasta 3 Con Paso 1 Hacer Para c<- 1 Hasta 3 Con Paso 1 Hacer Escribir matrizA[f,c]; //se imprime el elemento FinPara FinPara Escribir "Diagonal Principal"; Para f <- 1 Hasta 3 Con Paso 1 Hacer Para c<- 1 Hasta 3 Con Paso 1 Hacer si f = c Entonces Escribir matrizA[f,c]; //se imprime el elemento FinSi FinPara FinPara FinProceso

Page 25: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

25

Código en Lenguaje C //diagonal.c #include<stdio.h> #define MAXF 3 #define MAXC 3 void main() { int matrizA[MAXF][MAXC],f,c; printf("Datos de la matriz\n"); for(f=0;f<MAXF;f++) { for(c=0;c<MAXC;c++) { printf("Elemento[%d][%d]:",f+1,c+1); scanf("%d",&matrizA[f][c]); } } printf("\n***DATOS DE LA MATRIZ***\n"); for(f=0;f<MAXF;f++) { for(c=0;c<MAXC;c++) { printf("%d ",matrizA[f][c]); } printf("\n"); } printf("\nDiagonal Principal\n"); for(f=0;f<MAXF;f++) { for(c=0;c<MAXC;c++) { if(f==c) printf("%d ",matrizA[f][c]); } printf("\n"); } }

Page 26: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

26

Ejemplo de Salida:

Ejemplo #15: Programa en C que lee una matriz de N*M elementos enteros 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> #define MAXF 50 #define MAXC 50 void main() { int matriz[MAXF][MAXC],mayor=0,f,c,posif,posic, 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++) { printf("Elemento[%d][%d]: ",f,c); scanf("%d",&matriz[f][c]); }

}

Page 27: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

27

printf("\n***ELEMENTOS DEL ARRAY***\n"); for(f=0;f<nfil;f++) { for(c=0;c<ncol;c++) { printf("%d ",matriz[f][c]); if(matriz[f][c]>mayor) { mayor=matriz[f][c]; posif=f; posic=c; } } printf("\n"); } printf("\n%d ES EL ELEMENTO MAYOR Y SE ENCUENTRA EN LA POSICION [%d,%d]\n",mayor,posif,posic); } Ejemplo de Salida:

Page 28: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

28

Ejemplo #16: Programa en C que intercambia las columnas de un arreglo bidimensional. Los elementos de la primera columna se intercambian con los de la última, los de la segunda con los de la penúltima, y así sucesivamente. //intercambia.c #include<stdio.h> const int MAX=50; void main() { float intercambia[MAX][MAX],aux=0.0; int f,c,nfil,ncol; do { printf("Introduzca el numero de filas: "); scanf("%d",&nfil); }while(nfil>MAX || nfil <1);// Se verifica que el numero de filas sea correcto do { printf("Introduzca el numero de columnas: "); scanf("%d",&ncol); }while(ncol>MAX || ncol <1); // Se verifica que el numero de columnas sea correcto for(f=0;f<nfil;f++) { for(c=0;c<ncol;c++) { printf("Elemento[%d][%d]: ",f,c); scanf("%f",&intercambia[f][c]); } } printf("\nElementos del array antes del intercambio\n"); for(f=0;f<nfil;f++) { for(c=0;c<ncol;c++) { printf("%f ",intercambia[f][c]); } printf("\n"); }

Page 29: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

29

//Observa que el índice del array correspondiente a las columnas solo se mueve a la mitad for(c=0;c<(ncol/2);c++) { for(f=0;f<nfil;f++) { aux = intercambia[f][c]; intercambia[f][c] = intercambia[f][ncol-c-1]; intercambia[f][ncol-c-1]=aux; } } printf("\n***INTERCAMBIO DE COLUMNAS***\n"); for(f=0;f<nfil;f++) { for(c=0;c<ncol;c++) { printf("%f ",intercambia[f][c]); } printf("\n"); } } Ejemplo de Salida:

Page 30: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

30

Ejemplo #17: Crear un programa que cree un array de N X M indicando que una empresa tiene N vendedores cada uno de los cuales vende 5 productos. El array almacena los ingresos obtenidos por cada vendedor en cada producto, imprimir el total de cada vendedor y obtener los ingresos totales de la tienda. //tienda.c #include<stdio.h> #define NV 100 #define NP 5 void main() { int tienda[NV][NP],suma_vta,v,p,nv; int total_vta=0; printf("Introduzca el numero de vendedores:"); scanf("%d",&nv); //Lectura de los datos de la matriz for(v=0;v<nv;v++) { printf("\n***VENDEDOR %d***\n",v+1); for(p=0;p<NP;p++) { printf("Venta[%d][%d]: ",v+1,p+1); scanf("%d",&tienda[v][p]); } } //Escribir la suma de las M ventas realizadas por cada vendedor for(v=0;v<nv;v++) { suma_vta=0; for(p=0;p<NP;p++) { suma_vta += tienda[v][p]; } printf("El vendedor[%d] vendio C$: %d\n",v+1,suma_vta); total_vta += suma_vta; } printf("\n\tEL TOTAL DE VENTAS ES C$ %d\n",total_vta); }

Page 31: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

31

Ejemplo de Salida:

� 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.

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 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.

Page 32: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

32

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.

Ejemplo #18: Programa para leer una lista de nombres y los almacene en una matriz. Una vez construida, visualiza su contenido.

//cadenas.c #include<stdio.h> #include<ctype.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("Cuantas cadenas desea leer: "); scanf("%d",&nf); }while(nf<1 || nf>FIL); fflush(stdin); printf("Escriba las cadenas que desea introducir:\n"); for(f=0;f<nf;f++) { printf("Nombre[%d]: ",f); fin=gets(nombre[f]); } nf= f; do { printf("Desea visualizar el contenido de la matriz? (s/n)"); resp= tolower(getchar());

Page 33: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

33

}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]); } } Ejemplo de Salida:

� UTILIZACIÓN DE ARRAYS COMO PARÁMETRO:

En C todos los arrays se pasan por referencia (dirección). Esto significa que cuando se llama a una función y se utiliza un array como parámetro, se debe tener cuidado de no modificar los arrays en una función llamada. C trata automáticamente la llamada a la función como si hubiera situado el operador de dirección & delante del nombre del array. Dadas las siguientes declaraciones: #define MAX 100 double datos[MAXl; Se puede declarar una función que acepte un array de valores double como parámetro. La función SumaDeDatos() puede tener el siguiente prototipo: double SumaDeDatos(double datos[MAXl);

Page 34: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

34

Incluso mejor si se dejan los corchetes en blanco y se añade un segundo parámetro que indica el tamaño del array: double SumaDeDatos(double datos[], int n); A la función SumaDeDatos se pueden entonces pasar argumentos de tipo array junto con un entero n, que informa a la función sobre cuantos valores contiene el array. Por ejemplo, esta sentencia visualiza la suma de valores de los datos del array: printf ("\nSuma = %lf",SumaDeDatos(datos,MAX)) ; double SumaDeDatos(double datos[ ], int n) {

double suma = 0; while (n > 0) suma += datos[--nl; return suma;

} Cuando se utiliza una variable array como argumento, la función receptora puede no conocer cuántos elementos existen en el array. Sin su conocimiento una función no puede utilizar el array. Aunque la variable array puede apuntar al comienzo de él, no proporciona ninguna indicación de donde termina el array. Se pueden utilizar dos métodos alternativos para permitir que una función conozca el número de argumentos asociados con un array que se pasa como argumento de una función: � Situar un valor de señal al final del array, que indique a la función que se ha de detener el proceso en ese momento; � Pasar un segundo argumento que indica el número de elementos del array. Ejemplo #19: Programa en C que intercambia las columnas de un arreglo bidimensional. Los elementos de la primera fila se intercambian con los de la última, los de la segunda con los de la penúltima, y así sucesivamente, implementando funciones. //intercambiafns.c #include<stdio.h> #define MAX 50 //Prototipos de Funciones void LeerArray(float [ ][MAX],int,int); void ImprimirArray(float [ ][MAX],int,int); void IntercambiaCol(float [ ][MAX],int,int);

Page 35: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

35

void main() { float intercambia[MAX][MAX]; int nfil,ncol; do { printf("Introduzca el numero de filas: "); scanf("%d",&nfil); }while(nfil>MAX || nfil <1);// Se verifica que el numero de filas sea correcto do { printf("Introduzca el numero de columnas: "); scanf("%d",&ncol); }while(ncol>MAX || ncol <1); // Se verifica que el numero de columnas sea correcto //Llamadas a funciones LeerArray(intercambia,nfil,ncol); printf("\nElementos del array antes del intercambio\n"); ImprimirArray(intercambia,nfil,ncol); IntercambiaCol(intercambia,nfil,ncol); printf("\n***INTERCAMBIO DE COLUMNAS***\n"); ImprimirArray(intercambia,nfil,ncol); } //Esta función lee un array bidimensional de tipo float de nfilas y ncolumnas void LeerArray(float intercambia[ ][MAX],int nfil,int ncol) { int f,c; for(f=0;f<nfil;f++) { for(c=0;c<ncol;c++) { printf("Elemento[%d][%d]: ",f,c); scanf("%f",&intercambia[f][c]); } } }

Page 36: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

36

//Esta función intercambia las columnas del array. void IntercambiaCol(float intercambia[ ][MAX],int nfil,int ncol) { int f,c; float aux; //Observa que el índice del array correspondiente a las columnas solo se mueve a la mitad for(c=0;c<(ncol/2);c++) { for(f=0;f<nfil;f++) { aux = intercambia[f][c]; intercambia[f][c] = intercambia[f][ncol-c-1]; intercambia[f][ncol-c-1]=aux; } } } //Esta función imprime un array bidimensional de tipo float de nfilas y ncolumnas void ImprimirArray(float intercambia[ ][MAX],int nfil,int ncol) { int f,c; for(f=0;f<nfil;f++) { for(c=0;c<ncol;c++) { printf("%f ",intercambia[f][c]); } printf("\n"); } }

Page 37: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

37

EJERCICIOS PROPUESTOS:

1. Realice un programa en C que lea N elementos enteros y que imprima el número de veces que se repite un número X en dicho array.

2. Realice un programa en C que lea en un array la calificación de 50 estudiantes. Calcule e

imprima el porcentaje de aprobados y reprobados tomando en cuenta que la calificación mínima para aprobar es 70 pts.

3. Realice un programa en C que permita leer dos arrays de 10 elementos cada uno e

imprimir la palabra IGUALES si ambos arrays son iguales y DIFERENTES si no los son. Tomar en cuenta que serán iguales si en la misma posición de ambos arrays se encuentra el mismo elemento.

4. Realice un programa en C que permita al Director del Consejo Supremo Electoral

encontrar el número y porcentaje de votos obtenidos por cada uno de los 3 candidatos de la contienda electoral en relación a los 3000 votantes que asistieron a las urnas a depositar su voto. Lea en un array la intención de voto de cada una de las personas.

5. Escribe un programa en C que lea del teclado una cadena y muestre en la pantalla la

cantidad de consonantes y de vocales que contiene dicha cadena.

6. Realice un programa en C que permita calcular la suma de los elementos de la diagonal principal de una matriz (N*N), el producto de los elementos de la diagonal secundaria.

7. Las calificaciones de los estudiantes del Departamento de Computación se tienen en una

matriz de N x M elementos (N, número de alumnos; M, número de asignaturas). Realizar un programa en C que imprima el promedio de notas de cada alumno y el promedio general.

8. Escribir un programa que rellene automáticamente una matriz N*M con la suma de sus

índices (Es decir, el elemento a[1][1] = 1+1=2, a[3][2] = 3+2=5). El programa mostrará la matriz resultante por pantalla.

9. Realice un programa que cuente el número de veces que se repite una palabra en una

frase.

10. Realice un programa en C que permita introducir una lista con las edades de los N estudiantes de la asignatura de Programación Estructurada que imprima el array de las edades en formato descendente, cuál es la edad menor, edad promedio. Defina las siguientes funciones:

Page 38: TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C · 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

Tipos de Datos Compuestos Estáticos en C

38

int CalcularMínimo(int edades[],int nelem); int Promedio(int edades[],int nelem); void ImprimirDescendente(int edades[],int nelem);

11. Realice un programa en C que lea un array bidimensional de N filas y M columnas

y que imprima el número de dígitos que tiene cada elemento del array. Ejemplo:

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.