Arrays-en-C

30
TIPOS DE DATOS COMPUESTOS ESTÁTICOS EN C Ing. Karina Esquivel Alvarado UNIVERSIDAD NACIONAL AUTÓNOMA DE NICARAGUA, UNAN – LEÓN DEPARTAMENTO DE COMPUTACIÓN INGENIERÍA EN SISTEMAS / TELEMÁTICA

description

Arreglos en C. Ejercicios practicos.

Transcript of Arrays-en-C

  • TIPOS DE DATOS COMPUESTOS

    ESTTICOS EN C

    Ing. Karina Esquivel Alvarado

    UNIVERSIDAD NACIONAL AUTNOMA DE NICARAGUA, UNAN LEN

    DEPARTAMENTO DE COMPUTACIN

    INGENIERA EN SISTEMAS / TELEMTICA

  • ARRAYS (listas y tablas) EN C

    INTRODUCCIN:

    Sin embargo, muchos de estos problemas se podran resolver si aplicramos en cambio tipos estructurados de datos, los cuales ocupan un grupo de casillas nombre.

    DEFINICIN DE ARRAY:

    Formalmente definimos un arreglo de la siguiente manera: finita, homognea y ordenada de elementosreferencia a cada elemento del arreglo por medio de un ndic

    Finita: porque todo arreglo tiene un lmite, es decir, se debe determinar cul es el nmero mximo de elementos del arreglo.

    Homognea: porque todos los elementos del arreglo deben ser del mismo tipo.

    Ordenada: porque se puede determinar cul es el prelemento, cul el segundo y as sucesivamente.

    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 eleme

    ndice que especifica el lugar que ocupa cada elemento dentro del archivo.

    Un array (lista o tablaque se referencian por un nombre comn. elementos del array 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.

    Tipos de Datos Compuestos Estticos en C

    2

    ARRAYS (listas y tablas) EN C

    En la prctica es frecuente que enfrentemos problemas cuya solucin sera muy difcil de hallar si utilizramos tipos simples de datospara resolverlos. Es decir, datos que ocupan una sola casilla de memoria.

    Sin embargo, muchos de estos problemas se podran resolver si aplicramos en cambio tipos estructurados de datos, los cuales ocupan un grupo de casillas de memoria y se identifican con un

    DEFINICIN DE ARRAY:

    Formalmente definimos un arreglo de la siguiente manera: finita, homognea y ordenada de elementos, en la que se hace referencia a cada elemento del arreglo por medio de un ndic

    porque todo arreglo tiene un lmite, es decir, se debe determinar cul es el nmero mximo de elementos del arreglo.

    porque todos los elementos del arreglo deben ser del mismo tipo.

    porque se puede determinar cul es el prelemento, cul el segundo y as sucesivamente.

    Los arreglos se caracterizan por: los elementos en posiciones contiguas de memoria.

    Tienen un mismo nombre de variable que representa a todos los

    Para hacer referencia a esos elementos es necesario utilizar un ndice que especifica el lugar que ocupa cada elemento dentro

    (lista o tabla) es una coleccin de datosque se referencian por un nombre comn. Los datos se llaman

    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

    Tipos de Datos Compuestos Estticos en C

    En la prctica es frecuente que enfrentemos problemas cuya solucin sera muy difcil de hallar si

    tipos simples de datos para resolverlos. Es decir, datos que ocupan una sola casilla de memoria.

    Sin embargo, muchos de estos problemas se podran resolver si aplicramos en cambio tipos estructurados de datos, los cuales

    de memoria y se identifican con un

    Formalmente definimos un arreglo de la siguiente manera: Coleccin , en la que se hace

    referencia a cada elemento del arreglo por medio de un ndice. porque todo arreglo tiene un lmite, es decir, se debe

    determinar cul es el nmero mximo de elementos del arreglo. porque todos los elementos del arreglo deben ser

    porque se puede determinar cul es el primer elemento, cul el segundo y as sucesivamente.

    los elementos en posiciones contiguas de memoria. Tienen un mismo nombre de variable que representa a todos los

    ntos es necesario utilizar un ndice que especifica el lugar que ocupa cada elemento dentro

    datos del mismo tipo Los datos se llaman

    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

  • Tipos de Datos Compuestos Estticos en C

    3

    Cada tem del array se denomina elemento. Los elementos de un array se numeran consecutivamente 0, 1, 2, 3... Estos nmeros se denominan valores ndice o subndice del array. El trmino subndice se utiliza ya que se especifica igual que en matemticas, como una secuencia a0, a1, a2, a3 Estos nmeros localizan la posicin 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 posicin 0, a[1] es el nombre (valor) del elemento que est en la posicin 1, etc. En general, el elemento i-simo est en la posicin i-1. De modo que si el array tiene n elementos, sus nombres son a[0], a[1], a[2], ., a[n-1].

    Grficamente 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 lmite inferior 0 y como ndice superior el tamao del array menos 1.

    DEFINICIN Y DECLARACIN 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 tamao o longitud del array.

    La sintaxis para declarar un array es simple: tipo nombreArray[numerodeElementos];

  • Tipos de Datos Compuestos Estticos en C

    4

    Siendo: tipo: El tipo de los elementos que conformarn el array. nombreArray: El nombre de nuestro array . numerodeElementos: Un nmero entero mayor que cero que indica el

    tamao del array.

    Ejemplos de declaracin de arrays: int datos[45]; /* Declara un array de 45 elementos enteros */ char caracteres[15]; /* Declara un array de 15 caracteres */ float valores[20]; /* Declara un array de 20 elementos en coma flotante*/

    Si por ejemplo, se quiere crear un array de nmeros reales y su tamao es una constante representada por un parmetro:

    #define NELEM 20 float valores[NELEM];

    Para acceder al tercer elemento y leer un valor de entrada del array: scanf(%f,&valores[2]);

    Precaucin: C no comprueba que los ndices del array estn dentro del rango definido. As, por ejemplo, se puede intentar acceder a valores[21], el compilador no producir ningn error, lo que puede producir un fallo en su programa, dependiendo del contexto en que se encuentre el error.

    SUBNDICES DE UN ARRAY:

    El ndice de un array se denomina, con frecuencia, subndice del array. El trmino procede de las matemticas, en las que un subndice 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 mtodo de numeracin del elemento i-simo con el ndice o subndice i-1 se denomina indexacin basada en cero. Su uso tiene el efecto de que el ndice de un elemento del array es siempre el mismo que el nmero 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].

  • Tipos de Datos Compuestos Estticos en C

    5

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

    Precaucin: C permite asignar valores fuera de rango a los subndices. Se debe tener cuidado no hacer esta accin, debido a que se sobreescribiran datos o cdigo.

    Los arrays de caracteres funcionan de igual forma que los arrays numricos, partiendo de la base de que cada carcter ocupa normalmente un byte. As, por ejemplo, un array llamado ciudad se puede representar de la siguiente manera:

    Ejemplo: char ciudad[]= Leon;

    Es importante tomar en cuenta que en las cadenas de caracteres el sistema siempre inserta un ltimo carcter (nulo, \0) para indicar el fin de cadena.

    INICIALIZACIN 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 [2] = 30; edades [3] = 35;

    ciudad

    [0]

    [1]

    [2]

    [3]

    L

    e

    o

    n

    \0

  • Tipos de Datos Compuestos Estticos en C

    6

    La primera sentencia fija edades[0] al valor 15, edades[1] al valor 25, etc. Sin embargo, este mtodo no es prctico cuando el array contiene muchos elementos. El mtodo 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 tamao del array se puede determinar automticamente por las constantes de inicializacin. 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 e inicializa un array de 3 elementos char c[ ] = {L,u,i,s}; //Declara e inicializa un array de 4 elementos

    En C las cadenas de caracteres, se caracterizan por tener un carcter final que indica el fin de la cadena, es el carcter nulo (\0). Lo habitual es inicializar un array de caracteres (una variable cadena) con una constante cadena. Ejemplo: char cad [ ] = Hola mundo;

    El mtodo de inicializar arrays mediante valores constantes despus de su definicin es adecuado cuando el nmero de elementos del array es pequeo.

    Ejemplo #1: Programa para inicializar un array de 10 elementos enteros a 1. #include int main() { int datos[10],i; printf("\nElemento\tValor"); for(i=0;i

  • Tipos de Datos Compuestos Estticos en C

    7

    Ejemplo #2: Programa en C que declara e inicializa un arreglo de N datos, de modo que los elementos de ndice par valgan 0 y los de ndice impar valgan 1.

    Solucin (Pseudocdigo) Proceso posiciones_array Definir datos_array,v Como Entero; Dimension datos_array[100]; Escribir "Cuantos datos desea en el arreglo?"; Leer ndatos; Para v

  • Tipos de Datos Compuestos Estticos en C

    8

    Pueden asignarse valores a un array utilizando un bucle for, while o do-while y ste suele ser el sistema ms empleado normalmente.

    Ejemplo #3: Programa en C que, al recibir como dato un arreglo unidimensional de tipo entero de N elementos, determina si el arreglo es palndrome. #include int main() { int numd=0,alto=0,d,ndatos,longarray; printf("Cuantos datos?"); scanf("%d",&ndatos); int palindro[ndatos];

    for(d=0;d

  • Tipos de Datos Compuestos Estticos en C

    9

    Mientras m < 10 Hacer Escribir 'Marca del corredor[',m+1,']'; Leer marcascorredor[m]; sumamarc

  • Tipos de Datos Compuestos Estticos en C

    10

    Ejemplo #5: Programa en C que almacene en un arreglo unidimensional los 20 primeros nmeros primos. Un nmero primo es un nmero entero mayor que cero, que tiene exactamente dos divisores positivos. Tambin podemos definirlo como aquel nmero entero positivo que no puede expresarse como producto de dos nmeros enteros positivos ms pequeos que l, o bien, como producto de dos enteros positivos de ms de una forma. Conviene observar que con cualquiera de las dos definiciones el 1 queda excluido del conjunto de los nmeros primos. #include #define MAX 20 int primos[MAX]; int indice=0; int main() { int bandera,numero,i,p; numero=1;

    while(indice

  • Tipos de Datos Compuestos Estticos en C

    11

    Ejemplo #6: Programa en C que almacena en un arreglo unidimensional de tipo entero los primeros 10 nmeros de la serie Fibonacci. #include #define MAX 10 int main() { int fibonacci[MAX],f,primero=0,segundo=1,i; fibonacci[0]=0; fibonacci[1]=1; for(i=2;i

  • Tipos de Datos Compuestos Estticos en C

    12

    /* proceso de calculo, resultado se almacena en arreglo c */ for(i=0;i

  • Tipos de Datos Compuestos Estticos en C

    13

    printf("\n****ARRAY ORDENADO EN FORMATO ASCENDENTE****\n"); for (i = 0;i

  • Tipos de Datos Compuestos Estticos en C

    14

    [] []

    Ejemplos de declaracin 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 carcter, sino que cada elemento es otro array.

    Los elementos de los arrays se almacenan en memoria de modo que el subndice ms prximo al nombre del array es la fila y el otro subndice, la columna.

    INICIALIZACIN DE ARRAYS MULTIDIMENSIONALES

    Los arrays multidimensionales se pueden inicializar, al igual que los de una dimensin, cuando se declaran. La inicializacin 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} };

  • Tipos de Datos Compuestos Estticos en C

    15

    ACCESO A LOS ELEMENTOS DE LOS ARRAYS BIDIMENSIONALES

    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 asignacin directa de valores a los elementos es:

    Insercin de elementos: [ndice fila] [ndice columna] = valor elemento;

    Extraccin de elementos: = [ndice fila] [ndice columna];

    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 #1: Programa en C que permite inicializar a 1 todos los elementos de un array bidimensional de 3 filas y 4 columnas. #include int main() { int i,j,datos[3][4]; printf("\n***Visualizacion del Array 3F x 4C***\n"); for(i=0; i

  • Tipos de Datos Compuestos Estticos en C

    16

    Ejemplo #2 Escribir un programa que rellene automticamente 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.

    #include #define MAXF 10 #define MAXC 10 int main() { int indices[MAXF][MAXC]; 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 for(f=0;f

  • Tipos de Datos Compuestos Estticos en C

    17

    printf("NUMERO DE FILAS: "); scanf("%d",&fil); printf("NUMERO DE COLUMNAS: "); scanf("%d",&col); int matriz[fil][col];

    for(f=0;f

  • Tipos de Datos Compuestos Estticos en C

    18

    Programa en C: #include #include int main() { int f,c,fil,col,indice; printf("NUMERO DE FILAS: "); scanf("%d",&fil); printf("NUMERO DE COLUMNAS: "); scanf("%d",&col); int matriz[fil][col];

    for(f=0;f

  • Tipos de Datos Compuestos Estticos en C

    19

    //Diagonal Principal if((f+c)==(fil-1)) suma_ds+= diagonales[f][c];

    //Diagonal Secundaria if(f==c) prod_dp *= diagonales[f][c]; } } for(f=0;f

  • Tipos de Datos Compuestos Estticos en C

    20

    Si posfil>0 Y posfil

  • Tipos de Datos Compuestos Estticos en C

    21

    for(c=0;cmay) may=matriz_ejemplo[posfil][c]; }

    printf("El mayor elemento de la fila #%d es: %d\n",posfil,may);

    } else

    printf("Numero de fila invalido\n"); return 0;

    }

    CARACTERES Y CADENAS DE CARACTERES

    Caracteres: Un carcter, es un tipo de dato simple que representa un nmero, una letra o cualquier carcter especial disponible del teclado de la mquina. Cuando se asigna un carcter a una variable tipo char, ste siempre se debe escribir entre apstrofos .

    Una cadena de caracteres: Es un tipo de datos estructurado compuesto por caracteres. En el lenguaje de programacin C, una cadena de caracteres se define como un arreglo de caracteres que termina con el carcter nulo (\0). Cuando se asigna una cadena de caracteres a una variable de tipo char, sta se debe escribir entre comillas .

    Ejemplo: char Cadena[]= Programacion;

    Es importante comprender la diferencia entre un array de caracteres y una cadena de caracteres. Las cadenas contienen un carcter nulo al final del array de caracteres.

    Array de Caracteres 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 Carcter Nulo

  • Tipos de Datos Compuestos Estticos en C

    22

    Las cadenas se sealan incluyendo un carcter final de la cadena; el carcter nulo (\0), cuyo valor en el cdigo ASCII es 0. El medio ms fcil de inicializar un array de caracteres es hacer la inicializacin de la declaracin: char Cadena[13]=Programacion;

    El compilador aade automticamente un carcter nulo al final de la cadena, de modo que la secuencia real sera: char Cadena[13]=Programacion;

    Cadena

    La asignacin 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'

    Para copiar una constante cadena o copiar una variable de cadena a otra variable de cadena se debe utilizar la funcin de la biblioteca estndar: strcpy(cadena1,cadena2) permite copiar una constante de cadena en una cadena. Para copiar el nombre "karen" en el array nombre, se puede escribir strcpy(nombre, "karen" ) ; strcpy, aade un carcter nulo al final de la cadena. Ejemplo: #include #include #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;

    }

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

  • Tipos de Datos Compuestos Estticos en C

    23

    Ejemplo #1: Programa en C que al recibir como datos una cadena de caracteres y una posicin de la cadena, determine si el carcter correspondiente a la posicin dada es una letra minscula. #include #include #include int main() { char p,cad[50]; int n; printf("Ingrese la cadena de hasta 50 caracteres: "); gets(cad);

    printf("Ingrese la posicion en la cadena que desea verificar: ");

    scanf("%d",&n);

    if((n>=0) && (n

  • Tipos de Datos Compuestos Estticos en C

    24

    Ejemplo #2: Programa en C que al recibir como dato un arreglo unidimensional de tipo cadena de caracteres, determina el nmero de minsculas y maysculas que hay en cada cadena. #include #include #include int main() { char frase[20][50]; //Arreglo Unidimensional de cadena de caracteres int n,i,mi=0,ma=0,ca; printf("Ingrese el numero de cadenas a leer: "); scanf("%d",&n);

    for(i=0;i

  • Tipos de Datos Compuestos Estticos en C

    25

    Ejemplo #3: Programa en C que al recibir como datos cadenas de caracteres de hasta 80 caracteres como mximo, cuenta el nmero de palabras que tiene cada lnea. Cada cadena se lee llamando a la funcin gets() y para contar las palabras se recorre el array cadena contando el nmero de espacios, la longitud de la cadena se determina con una llamada a la funcin strlen(). El nmero de palabras ser el nmero de espacios(blancos) contados, ms uno ya que la ltima palabra no termina con un espacio sino con el retorno de carro. La ejecucin termina tecleando al inicio de una lnea Z (Ctrl+Z); entonces la funcin gets() devuelve NULL y termina el bucle. #include #include int main() { char cadena[80],*apunta; int car,np; printf("Introducir Cadena: "); apunta=gets(cadena);

    while(apunta != NULL) { np=0;

    for(car=0;car0) np++;

    printf("\n%s tiene %d palabras\n",cadena,np); printf("Introducir Cadena: "); apunta=gets(cadena); } return 0; }

    Ejemplo #4: Programa en C que al recibir como datos cadenas de caracteres que contienen nmeros reales, calcula e imprime la suma y el promedio de dichos nmeros.

    #include #include #include #include

  • Tipos de Datos Compuestos Estticos en C

    26

    int main(void) { char cad[10],r; int i=0; float sum=0.0;

    printf("\nDesea ingresar una cadena de caracteres?"); r=getchar(); while(toupper(r) =='S') { printf ("\nIntroduce una cadena de caracteres: "); fflush(stdin); gets(cad); i++; sum += atof(cad);

    printf("\nDesea ingresar otra cadena de caracteres(S/N)? ");

    r = getchar(); } printf("\nSuma = %.2f\n",sum); printf("\nPromedio = %.2f\n",(sum/i)); return 0; }

    Ejemplo de Salida:

    Ejemplo #5: Programa en C que al recibir como datos cadenas de caracteres, calcula e imprime la cantidad de vocales en minscula y mayscula que hay en dicha cadena. #include #include #define MAXLON 80 int main(void) {

  • Tipos de Datos Compuestos Estticos en C

    27

    char cadena[MAXLON+1]; int i, longitud,contmin=0,contmay=0;

    printf ("Introduce una cadena (max. %d caracteres.): ", MAXLON);

    gets(cadena); longitud = strlen(cadena); for (i = 0; i < longitud ; i++) {

    if (cadena[i] =='a' || cadena[i] == 'e' || cadena[i] == 'i' || cadena[i] == 'o' || cadena[i] == 'u')

    contmin++; if (cadena[i] =='A' || cadena[i] == 'E' || cadena[i] == 'I' || cadena[i] == 'O' || cadena[i] == 'U')

    contmay++; } printf ("***Hay %d Vocales Minusculas***\n", contmin); printf ("***Hay %d Vocales Mayusculas***\n", contmay); return 0; }

    Ejemplo #6: Programa para leer una lista de cadenas de caracteres, y encuentra la cadena de mayor longitud sin utilizar la funcin strlen e imprime la cadena y el nmero de caracteres de la misma.

    #include #include int main() { int i, n,cadmay=-1,posmay=0,ncar=0; char cad[50],frase[20][50];

    printf("Cuantas cadenas desea leer? "); scanf("%d",&n); for(i=0;i

  • Tipos de Datos Compuestos Estticos en C

    28

    if(ncar>cadmay) { cadmay=ncar; posmay=i; } }

    printf("\nLa cadena No.%d: %s es la que tiene mayor longitud con %d caracteres\n",posmay+1,frase[posmay],cadmay);

    return 0; } Ejemplo de Salida:

    Ejemplo #7: Programa en C que, al recibir como dato una lnea de texto (cadena de caracteres), imprime esa cadena en forma inversa. #include int main() { char palabra[30]; int i=0; printf("Ingrese una cadena:"); gets(palabra); puts(palabra); while(palabra[i] != '\0') i++; printf("%s tiene %d letras.\n", palabra, i); printf("%s escrita al reves es: ",palabra); while (i>=0) { printf("%c",palabra[i]); i--; } return 0; }

  • Tipos de Datos Compuestos Estticos en C

    29

    EJERCICIOS PROPUESTOS:

    1. Realice un programa en C que declare y lea un arreglo de N elementos, imprimir la suma de los nmeros pares y el producto de los nmeros impares del arreglo.

    2. Escriba un programa que lee dos vectores A y B de 20 elementos cada uno y multiplica el primer elemento de A por el ltimo de B y as sucesivamente hasta llegar al ltimo elemento de A por el primero elemento de B. El resultado de la multiplicacin se almacena en un vector C.

    3. Realice un programa en C que lea un arreglo de N datos y asigne a sus elementos los valores 1, 4, 9, 16........etc ( 12, 22, 32...).

    4. Realice un programa en C que lea en un arreglo las edades de N personas y que calcule e imprima la edad moda. La moda es la edad que ms veces aparece (si dos o ms edades aparecen muchas veces con la mxima frecuencia, asumiremos que cualquiera de ellas es la moda).

    5. Realice un programa en C que calcule e imprima la transpuesta de una matriz. La transpuesta de una matriz se obtiene al escribir las filas de la matriz como columnas y las columnas como filas.

    6. Realice un programa en C que intercambie las M filas de un arreglo bidimensional. Los elementos de la primera fila se intercambian con los de la ltima fila, los de la segunda con los de la penltima y as sucesivamente.

    7. Escribir un programa en C que lea un array de N * 5 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.

    8. Escribir un programa en C que, al recibir como datos una cadena de caracteres y un carcter X, determine cuntas veces se encuentra el carcter X en dicha cadena.

    9. Realice un programa en C que, al recibir como dato una cadena de caracteres, escriba esa lnea en forma inversa.

    10. Escribir un programa que, al recibir como dato una cadena de caracteres, convierta el primer carcter de cada palabra si sta fuera una letra, de minscula a mayscula.

  • Tipos de Datos Compuestos Estticos en C

    30

    BIBLIOGRAFA BSICA:

    Ceballos, Francisco Javier: C/C++ Curso de Programacin, 2da Edicin. Editorial RA-MA, 2002.

    Joyanes Aguilar, Luis; Zahonero Martnez Ignacio: Programacin en C. McGraw Hill, 2001.

    Gottfried, Byron S: Programacin en C. McGraw Hill, 1991.