Arreglos

34
ARREGLOS

Transcript of Arreglos

Page 1: Arreglos

ARREGLOS

Page 2: Arreglos

ARREGLOS UNIDIMENCIONALES

Es un tipo de dato estructurado que almacena en una sola variable un conjunto limitado de datos o elementos del mismo tipo. Así mismo corresponde a las localidades de memoria contiguas donde la dirección más baja corresponde al primer elemento y la dirección más alta al último.

• Un arreglo en lenguaje C inicia en la posición cero, por lo tanto el i-ésimo elemento está en la posición i-1, es decir si el arreglo llamado a tiene n elementos, sus nombres son

a[0], a[1],…a[n-1].

El tipo de datos almacenado en el arreglo puede contener cualquier tipo de dato.

Page 3: Arreglos

ARREGLOS

UNIDIMENCIONALES Un arreglo se caracteriza por:

1. Ser una lista de un número finito de n elementos del

mismo tipo.

2. Almacenar los elementos del arreglo en memoria

contigua.

3. Tener un único nombre de variable que representa

a todos los elementos y éstos se diferencian por un

índice o un subíndice

4. Acceder de manera directa o aleatoria a los

elementos individuales del arreglo, por el nombre

del arreglo y el índice o subíndice.

Page 4: Arreglos

ARREGLOS

UNIDIMENCIONALES

Formato para declarar un formato unidimensional

Donde:

tipo_dato: se refiere al tipo de dato de cada elemento del arreglo: puede ser entero, carácter, real, etc.

identif_arreglo: es el nombre que representa a todo el arreglo

tam_arreglo: la cantidad del elementos del arreglo

Page 5: Arreglos

ARREGLOS

UNIDIMENCIONALES

Por ejemplo, para declarar un arreglo de enteros llamado listanum con diez elementos se hace de la siguiente forma:

int listanum[10];

En C, todos los arreglos usan cero como índice para

el primer elemento.

Page 6: Arreglos

ARREGLOS

UNIDIMENCIONALES

La forma como pueden ser accesados los elementos de un arreglo, es de la siguiente forma:

listanum[2] = 15; /* Asigna 15 al 3er elemento del arreglo listanum*/

num = listanum[2]; /* Asigna el contenido del 3er elemento a la variable num */

Page 7: Arreglos

ARREGLOS

UNIDIMENCIONALES

A continuación se muestra un

arreglo de números reales cuyo

identificador es x:

Page 8: Arreglos
Page 9: Arreglos

ARREGLOS

UNIDIMENCIONALES

El siguiente ejemplo muestra la forma de pedirle 10 números al usuario e imprimirlos

después , utilizando for .

Page 10: Arreglos
Page 11: Arreglos
Page 12: Arreglos
Page 13: Arreglos

ARREGLOS DE CARACTERES

Una cadena de texto es un conjunto de

caracteres. Recordemos que en C no existe el tipo de dato cadena (string), por lo que se utiliza un

arreglo de caracteres, para poder almacenar una cadena.

Page 14: Arreglos

ARREGLOS DE CARACTERES

Cabe mencionar que un arreglo de caracteres va a

contener un carácter nulo al final (\0). El compilador lo

va a aumentar automáticamente este carácter al final

de la cadena de modo que la secuencia quedaría así:

Page 15: Arreglos

ARREGLOS DE CARACTERES

Si queremos almacenar una cadena de caracteres es el uso de la palabra scanf pero si queremos almacenar una cadena de con espacios en blanco podemos utilizar una palabra que se llama gets y esta en la librería string.h. Esta palabra solo se utiliza para leer cadena de caracteres y scanf para cualquier tipo de variables.

Page 16: Arreglos

1. /*Este programa convierte una

l¡nea de texto de MAYUSCULAS

a MINUSCULAS

2. utilizando el ciclo DO-WHILE*/

3. #include <stdio.h> 4. #include <conio.h>

5. #include <string.h> /* gets*/

6. #include <ctype.h> /*tolower*/

7. main()

8. { 9. char cadena[100];

10. int TAM, car, i=0;

11. printf("Escribe la linea de texto :

\t\n\n"); 12. gets(cadena);

13. TAM=strlen(cadena); /* strlen

calcula el no. de caracteres en

un cadena*/

14. do

15. {

16. car=cadena[i];

17. if((car>=65)&&(car<=90))

18. { 19. cadena[i]=tolower(cadena[i]);

/* Convierte un carácter, en un

parámetro entero , a minúscula*/

20. }

21. i++; 22. }

23. while (i<=TAM-1);

24. printf("\t %s",cadena);

25. getch();

26. }

Page 17: Arreglos
Page 18: Arreglos

1. /*Archivo:Leegets.c

2. Lectura de variables cadena */

3. #include <stdio.h>

4. #include <stdlib.h>

5. #include <string.h>

6. main()

7. {

8. char szNombre[10];

9. system ("cls");

10. printf ("\n CUAL ES EL NOMBRE?-----> ");

11. gets (szNombre);

12. printf("\n su nombre es -----> %s\n", szNombre);

13. printf("\n su inicial es -----> %c\n", szNombre[0]);

14. printf("\n la tercera letra de tu nombr es -----> %c\n", szNombre[2]);

15. printf ("\n");

16. system ("pause");

17. }

Page 19: Arreglos
Page 20: Arreglos

1. /* Ordenamiento de arreglo por método de burbuja */

2. #include <stdio.h> 3. #include <stdlib.h> 4. #define SIZE 10 5. main( ) 6. { 7. int a[SIZE]=

{12,35,6,48,8,27,32,87,52,75}; 8. int i, temporal, ciclo; 9. printf("Los valores en el orden

original son: \n"); 10. for (i=0; i< SIZE ; i++) 11. printf("%d, ", a[i]); 12. /* Ordenamiento */ 13. for (ciclo=0; ciclo<SIZE; ciclo++) 14. for (i=0; i<SIZE; i++) 15. /*Intercambio de valores en

caso de no estar en orden */

16. if (a[i] > a[i+1]) 17. { 18. temporal = a[i]; 19. a[i] = a[i+1]; 20. a[i+1]= temporal; 21. } 22. /*Impresion de valores

ordenados */ 23. printf("\nLos valores

ordenados son: \n"); 24. for (i=0; i< SIZE; i++) 25. printf("%d, ", a[i]);

26. system ("pause"); 27. }

Page 21: Arreglos
Page 22: Arreglos

1. /* Ordenamiento de arreglo por método de burbuja */

2. #include <stdio.h> 3. #include <stdlib.h> 4. main( ) 5. { 6. int i, temporal, ciclo,n; 7. int a[n]; 8. printf("de que tamaño es tu arreglo? \n"); 9. scanf ("%d",&n); 10. printf("Dame los datos de tu arreglo: \n"); 11. for (i=0; i< n ; i++) 12. { 13. printf("dato %d ---> ",i); 14. scanf ("%d",&a[i]); 15. 16. } 17. printf("Los elementos del arreglo son: \n"); 18. for (i=0; i< n ; i++) 19. printf("dato %d ---> %d \n",i,a[i]);

20. /* Ordenamiento */ 21. for (ciclo=0; ciclo<n; ciclo++) 22. for (i=0; i<n; i++) 23. /*Intercambio de valores en caso de no

estar en orden */ 24. if (a[i] > a[i+1]) 25. { 26. temporal = a[i]; 27. a[i] = a[i+1]; 28. a[i+1]= temporal; 29. } 30. /*Impresion de valores ordenados */ 31. printf("\nLos valores ordenados son: \n"); 32. for (i=0; i< n; i++) 33. printf("dato %d---> %d \n",i, a[i]);

34. system ("pause"); 35. }

Page 23: Arreglos

ARREGLOS

BIDIMENSIONALES

Un arreglo puede tener más de una dimensión, de tal manera que forme matrices

de dos, tres o aun más dimensiones.

Generalmente los arreglos no suelen

recomendarse para más de tres dimensiones,

ya que se vuelven muy difíciles de entender.

Page 24: Arreglos

ARREGLOS

BIDIMENSIONALES

Conjunto de n elementos del mismo tipo

almacenados en memoria contigua en una matriz o tabla. A diferencia de los arreglos

unidimencionales se requiere aquí de dos índices declarados en dos pares de corchetes, donde el primero se refiere al tamaño de las filas y el

segundo al tamaño de las columnas

Page 25: Arreglos

ARREGLOS

BIDIMENSIONALES Para declarar una tabla de 3 filas y columnas, se hará de la siguiente forma:

El No. D elementos será fila por columna por lo que quedarían así

Page 26: Arreglos

ARREGLOS

BIDIMENSIONALES

Para especificar los valores de un arreglo

Page 27: Arreglos

ARREGLOS

BIDIMENSIONALES

Para la lectura de datos la computadora requiere

de dos ciclos anidados uno para ubicar las filas y otro para ubicar las columnas

Page 28: Arreglos

ARREGLOS

BIDIMENSIONALES

Matriz de 3 filas por 4 columnas

Page 29: Arreglos

1. /*sumabidimensional*/ 2. #include<stdio.h> 3. #include<stdlib.h> 4. main() 5. { 6. int f,c,matriz[2][3],suma=0; 7. for(f=0;f<2;f++) 8. { 9. for(c=0;c<3;c++) 10. { 11. printf("\t\tElemento[%d][%d]: ",f,c); 12. scanf("%d",&matriz[f][c]); 13. suma = suma+matriz[f][c]; 14. } 15. } 16. printf("\n\tLa suma de los elementos de una matriz es:

%d\n", suma); 17. system ("pause"); 18. }

Page 30: Arreglos
Page 31: Arreglos

/*ALMACENAR UNA MATRIZ DE n*n E IMPRIMIR LOS ELEMENTOS Y SUMAR LOS ELEMENTOS DE LA DIAGONAL PRINCIPAL*/ #include<stdio.h> #include<stdlib.h> main() { float a[50][50],suma=0; int i,j,n,m; printf("\n No. de filas= "); scanf ("\t %d",&n); printf("\n No. de columnas= "); scanf ("\t %d",&m); for(i=0;i<n;i++) { printf("Lectura de la fila %d de la matriz A: \n",i+1); for(j=0;j<m;j++) { printf(" A (%d,%d)=", i+1,j+1); scanf ("%f",&a[i][j]); } } for(i=0; i<n; i++) suma = suma+a[i][i];

printf("\nSuma de la diagonal principal es : %f\n",

suma); system ("pause"); }

Page 32: Arreglos
Page 33: Arreglos

1. /*Diseñar un programa en C que lea una matriz de 3*3. Sumar las columnas e imprimir

2. que columna tuvo la máxima suma y la suma de esa columna.*/

3. #include<stdio.h> 4. #include<stdlib.h>

5. main() 6. { 7. int

matriz[3][3],sumac,f,c,mayor=0,numc;

8. for(f=0;f<3;f++)

9. {

10. for(c=0;c<3;c++)

11. { 12. printf("Elemento[%d][%d]: ",f+1,c+1);

13. scanf("%d",&matriz[f][c]); 14. } 15. }

16. printf("\n***DATOS DE LA MATRIZ

INTRODUCIDA***\n"); 17. for(f=0;f<3;f++)

18. { 19. for(c=0;c<3;c++)

20. { 21. printf(" %d ",matriz[f][c]); 22. }

23. printf("\n");

24. }

25. for(c=0;c<3;c++)

26. { 27. sumac=0;

28. for(f=0;f<3;f++) 29. { 30. sumac+=matriz[f][c];

31. }

32. printf("\nSUMA COLUMNA[%d]:%d\n",c+1,sumac);

33. if(sumac>mayor) 34. {

35. mayor=sumac; 36. numc=c;

37. } 38. } 39. printf("\nLa columna con mayor suma es:

%d y su valor es: %d\n",numc+1,mayor);

40. system ("pause"); 41. }

Page 34: Arreglos