arreglos multidimensionales cadenas de caracteresarreglos bidimensionales matrices, tablas, vector...
TRANSCRIPT
![Page 1: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/1.jpg)
Programación estructurada Arreglos multidimensionales Cadenas de caracteres
Dr. Noé Alejandro Castro Sánchez
![Page 2: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/2.jpg)
Arreglos bidimensionales
Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos
homogéneos en el que se necesita especificar dos subíndices para acceder a un elemento.
Fila 0
Fila 1
Fila 2 Fila 3
Col 1 Col 3 Col 5
![Page 3: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/3.jpg)
Arreglos bidimensionales
Declaración ◦ tipo nombre[filas][columnas] ◦ Ejemplo: int estante[2][2];
Procesamiento de elementos: ◦ Inserción: estante[1][0] = 5;
◦ Lectura: libro = estante[1][1];
◦ El acceso a los elementos se hace mediante bucles anidados.
![Page 4: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/4.jpg)
Arreglos multidimensionales
Arreglos de más de dos dimensiones. Raramente los datos del mundo
requieren más de 2 o 3 dimensiones. Arreglo tridimensional:
![Page 5: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/5.jpg)
Arreglos multidimensionales
Declaración: tipo nombre[t1][t2][t3]…[tn] int nombre[5][10][5]…[10];
Ejemplo: char libro[pag][lineas][col];
![Page 6: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/6.jpg)
Ejemplo
Llenar una matriz de 3 x 4 con unos e imprimirla
Ejercicio Realice la impresión en forma matricial:
1 1 1 1 1 1 1 1 1 1 1 1
![Page 7: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/7.jpg)
Ejercicio 1
Se desean capturar desde teclado las calificaciones de tres exámenes parciales de 5 alumnos
Calcular e imprimir el promedio de cada alumno
Imprimir qué alumnos (referenciados por el número de renglón) no exentan
![Page 8: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/8.jpg)
Ejercicio II
Lea valores para una matriz de 4 x 4 y realice lo siguiente: ◦ Identifique el menor y el mayor elemento, e
imprima su posición (renglón/columna) ◦ Sume los valores de la segunda y cuarta
columna ◦ Sume los valores del segundo y cuarto
renglón
![Page 9: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/9.jpg)
Ejercicio III
Dada una matriz cuadrada, sumar todos sus valores excepto los de la periferia. Ejemplo:
acum = 1 + 9 + 2 + 8
Nota: Los valores de cada casilla serán asignados aleatoriamente
3 6
9 1
0 7
5 9
4 2 1
0 4
8 6 3
![Page 10: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/10.jpg)
Generación de aleatorios I #include<stdio.h> #include<stdlib.h> // libreria para uso de rand() #include<conio.h> #include<time.h> // libreria para uso de time() main(void) { int tiempo = time(NULL), num;
srand(tiempo); //Semilla para generar aleatorio
num = rand()%100; // Generación de aleatorio
printf("%d ", num);
getch(); }
![Page 11: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/11.jpg)
Generación de aleatorios II rand() genera un número aleatorio. Siempre
que se reinicie el programa, generará el mismo número. Esto no es muy útil.
srand(numero) le proporciona a rand() un número a partir del cual generará el aleatorio (por ello se llama a dicho número semilla). ◦ Pero si siempre usamos el mismo número, generará
los mismos aleatorios. ◦ Si pasamos un número que varíe constantemente,
(como el tiempo) generará aleatorios diferentes
![Page 12: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/12.jpg)
Generación de aleatorios III time(NULL) devuelve la cantidad de segundos
transcurridos desde las 00:00 horas, del 1 de enero de 1970, fecha conocida como Época UNIX (o UNIX Epoch)
Bajo estas consideraciones, entonces: ◦ Generar valores entre 0 y 1: rand() % 2;
◦ Generar valores entre 0 y 99: rand() % 100;
◦ Etc.
![Page 13: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/13.jpg)
Ejercicio IV
Realice un programa que trasponga una matriz de 4 x 4. Considere lo siguiente: ◦ La matriz se llenará con números aleatorios
comprendidos entre 10 y 99. ◦ Imprimir matriz original y matriz traspuesta
14 22 10 91
34 82 13 33
54 10 39 71
66 81 50 12
14 34 54 66
22 82 10 81
10 13 39 50
91 33 71 12
![Page 14: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/14.jpg)
Cadenas y arreglos
![Page 15: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/15.jpg)
Cadenas y arreglos
Cadenas de texto: secuencia de caracteres (e. g., “abcde”, “hola mundo”).
C trata las cadenas de texto como arreglo de caracteres.
A B C D E F
A B C D E F \0
Array
Cadena
![Page 16: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/16.jpg)
Cadenas y arreglos (II)
Las cadenas terminan con el carácter nulo (\0) al final del arreglo.
C no tiene un tipo predefinido para manipular cadenas de caracteres (string).
![Page 17: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/17.jpg)
Inicialización char cad1[] = “Hola”; char cad2[] = {‘H’,‘o’,‘l’,‘a’,0}; char cad3[] = {‘H’,‘o’,‘l’,‘a’, ‘\0’};
H O L A \0 cad:
4 + 1
![Page 18: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/18.jpg)
Tratamiento de cadenas Incluir librería string.h strlen(cadena)
Devuelve la longitud de la cadena sin tomar en cuenta el caracter de final de cadena.
strcpy(cad_destino, cadena_origen) Copia el contenido de <cad_origen> en <cad_destino>.
strcat(cadena_destino, cadena_origen)
Concatena el contenido de <cadena_origen> al final de <cadena_destino>.
![Page 19: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/19.jpg)
Tratamiento de cadenas (II) strcmp(cadena1, cadena2) :
Compara las dos cadenas. Devuelve: ◦ 0 si las dos cadenas son iguales, ◦ < 0 (número negativo) si <cadena1> es menor
que (precede alfabéticamente a) <cadena2> y ◦ > 0 (número positivo) si <cadena1> es mayor
que <cadena2>.
![Page 20: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/20.jpg)
Lectura
scanf() char cad[20]; printf(“Ingresa nombre:”); /* leer cadena */
scanf(“%s”, cad);
/* leer un carácter */ scanf(“%c”, &cad[15]);
◦ scanf() lee datos hasta encontrar un espacio en blanco.
![Page 21: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/21.jpg)
Lectura (II) Lectura de “HOLA MUNDO” usando scanf()
gets()
Lee caracteres separados por espacios en blanco hasta el salto de línea.
gets(cad);
H O L A \0 % = @
Basura
8
~
![Page 22: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/22.jpg)
Escritura
printf() printf(“%s”, cad);
puts() ◦ reemplaza el carácter nulo por salto de línea.
puts(cad);
![Page 23: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/23.jpg)
Ejemplo #include <stdio.h>
#include <conio.h>
main(void){
char a[20];
printf("Ingrese la cadena: ");
scanf("%s", a);
printf("La cadena es : %s", a);
getch();
}
![Page 24: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/24.jpg)
Ejercicio 1
Remplace la lectura de la cadena con la función gets y la impresión de ella con puts.
![Page 25: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/25.jpg)
Ejemplo II #include <stdio.h>
#include <stdlib.h>
main(void)
{
char a[20], b[20];
printf("Ingrese cadena con algún espacio: ");
scanf("%s", a);
![Page 26: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/26.jpg)
Ejemplo II (continuación)
printf("Ingrese la misma cadena: ");
gets(b);
printf("La impresión en <a> es: ");
puts(a);
printf("La impresión en <b> es: ");
printf("%s", b);
getch();
}
![Page 27: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/27.jpg)
Ejercicio
Ejecute el programa ¿qué ocurre?
![Page 28: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/28.jpg)
Ejercicio
Ejecute el programa ¿qué ocurre? El buffer contiene los caracteres después
del primer espacio en blanco una cadena
Salto de línea (\n)
La función gets() extrae el contenido del
buffer, y el salto de línea la invoca.
![Page 29: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/29.jpg)
Solución
Invoque la función fflush(stdin) inmediatamente después de scanf()
![Page 30: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/30.jpg)
Ejercicios
Lea una cadena desde teclado e imprímala en forma inversa: ◦ Entrada “Recorrido monumental” ◦ Salida: “latnemunom odirroceR”
Imprima la cadena de entrada en el siguiente orden: primer carácter, último; segundo, penúltimo; tercero, antepenúltimo; y así sucesivamente
![Page 31: Arreglos multidimensionales Cadenas de caracteresArreglos bidimensionales Matrices, tablas, vector de vectores. Conjunto finito y ordenado de elementos homogéneos en el que se necesita](https://reader031.vdocuments.co/reader031/viewer/2022021523/5e2b697e9bfcc778cc745691/html5/thumbnails/31.jpg)
Ejercicios
1. Lea una cadena de caracteres y cuente el número de dígitos que tiene, letras y caracteres especiales, e imprima la frecuencia
2. Lea una cadena de caracteres con varios espacios en blanco entre las palabras y elimínelos para que sólo quede uno entre ellas. Imprima la cadena resultante